diff --git a/docker-compose.yml b/docker-compose.yml index f899d0c..f6f0535 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -32,6 +32,7 @@ services: - mysql ports: - 8000:8000 + - 8001:8001 networks: - laravel diff --git a/src/.env.example b/src/.env.example index 5fc4609..21f3a28 100644 --- a/src/.env.example +++ b/src/.env.example @@ -57,7 +57,7 @@ VITE_PUSHER_PORT="${PUSHER_PORT}" VITE_PUSHER_SCHEME="${PUSHER_SCHEME}" VITE_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" -RABBITMQ_HOST=192.168.56.222 +RABBITMQ_HOST='192.168.56.222' RABBITMQ_PORT=5672 RABBITMQ_USER=rabbit1 RABBITMQ_PASSWORD=rabbit@123 diff --git a/src/app/Console/Commands/SendSocket.php b/src/app/Console/Commands/SendSocket.php new file mode 100644 index 0000000..6931fd1 --- /dev/null +++ b/src/app/Console/Commands/SendSocket.php @@ -0,0 +1,40 @@ +text( + json_encode([ + 'username' => $this->argument('username'), + ]) + ); + $client->text($this->argument('message')); + $client->receive(); + $client->close(); + } +} diff --git a/src/app/Jobs/ProcessJob.php b/src/app/Jobs/ProcessJob.php new file mode 100644 index 0000000..c8e1b17 --- /dev/null +++ b/src/app/Jobs/ProcessJob.php @@ -0,0 +1,48 @@ +process = $process; + $this->onQueue($process); + } + + /** + * Execute the job. + * + * @return void + */ + public function handle() + { + $client = new \WebSocket\Client("ws://192.168.56.101:2346/"); + $client->text( + json_encode([ + 'username' => 'kai.1', + ]) + ); + $client->text( + $this->process . ': ' . rand() + ); + $client->receive(); + $client->close(); + } +} diff --git a/src/composer.json b/src/composer.json index 4607ecc..7fa8dcf 100644 --- a/src/composer.json +++ b/src/composer.json @@ -12,6 +12,7 @@ "laravel/sanctum": "^3.0", "laravel/tinker": "^2.7", "predis/predis": "^2.2", + "textalk/websocket": "^1.5", "vladimir-yuldashev/laravel-queue-rabbitmq": "^13.3" }, "require-dev": { diff --git a/src/composer.lock b/src/composer.lock index 9967301..e24439c 100644 --- a/src/composer.lock +++ b/src/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "d708be9c051b0e2eb167a1f2a0295b3a", + "content-hash": "97efdeb4e149ae370ca39b1992647562", "packages": [ { "name": "brick/math", @@ -5825,6 +5825,55 @@ ], "time": "2023-12-28T19:16:56+00:00" }, + { + "name": "textalk/websocket", + "version": "1.5.8", + "source": { + "type": "git", + "url": "https://github.com/Textalk/websocket-php.git", + "reference": "d05dbaa97500176447ffb1f1800573f23085ab13" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Textalk/websocket-php/zipball/d05dbaa97500176447ffb1f1800573f23085ab13", + "reference": "d05dbaa97500176447ffb1f1800573f23085ab13", + "shasum": "" + }, + "require": { + "php": "^7.2 | ^8.0", + "psr/log": "^1 | ^2 | ^3" + }, + "require-dev": { + "php-coveralls/php-coveralls": "^2.0", + "phpunit/phpunit": "^8.0|^9.0", + "squizlabs/php_codesniffer": "^3.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "WebSocket\\": "lib" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "ISC" + ], + "authors": [ + { + "name": "Fredrik Liljegren" + }, + { + "name": "Sören Jensen", + "email": "soren@abicart.se" + } + ], + "description": "WebSocket client and server", + "support": { + "issues": "https://github.com/Textalk/websocket-php/issues", + "source": "https://github.com/Textalk/websocket-php/tree/1.5.8" + }, + "time": "2022-04-26T06:28:24+00:00" + }, { "name": "tijsverkoyen/css-to-inline-styles", "version": "v2.2.7", @@ -5880,23 +5929,23 @@ }, { "name": "vladimir-yuldashev/laravel-queue-rabbitmq", - "version": "v13.3.4", + "version": "v13.3.5", "source": { "type": "git", "url": "https://github.com/vyuldashev/laravel-queue-rabbitmq.git", - "reference": "03e10511426a00758129bd695f9a99c4a5470461" + "reference": "2fda5722bf2b3d77e448aabcccce8d88305bcdea" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vyuldashev/laravel-queue-rabbitmq/zipball/03e10511426a00758129bd695f9a99c4a5470461", - "reference": "03e10511426a00758129bd695f9a99c4a5470461", + "url": "https://api.github.com/repos/vyuldashev/laravel-queue-rabbitmq/zipball/2fda5722bf2b3d77e448aabcccce8d88305bcdea", + "reference": "2fda5722bf2b3d77e448aabcccce8d88305bcdea", "shasum": "" }, "require": { "ext-json": "*", "illuminate/queue": "^9.0|^10.0", "php": "^8.0", - "php-amqplib/php-amqplib": "^v3.5.2" + "php-amqplib/php-amqplib": "^v3.6" }, "require-dev": { "laravel/framework": "^9.0|^10.0", @@ -5938,9 +5987,9 @@ "description": "RabbitMQ driver for Laravel Queue. Supports Laravel Horizon.", "support": { "issues": "https://github.com/vyuldashev/laravel-queue-rabbitmq/issues", - "source": "https://github.com/vyuldashev/laravel-queue-rabbitmq/tree/v13.3.4" + "source": "https://github.com/vyuldashev/laravel-queue-rabbitmq/tree/v13.3.5" }, - "time": "2024-01-10T17:43:56+00:00" + "time": "2024-01-26T16:20:56+00:00" }, { "name": "vlucas/phpdotenv", diff --git a/src/config/horizon.php b/src/config/horizon.php index 64b67f8..ab98891 100644 --- a/src/config/horizon.php +++ b/src/config/horizon.php @@ -13,7 +13,7 @@ return [ | setting is null, Horizon will reside under the same domain as the | application. Otherwise, this value will serve as the subdomain. | - */ + */ 'domain' => env('HORIZON_DOMAIN'), @@ -26,7 +26,7 @@ return [ | to change this path to anything you like. Note that the URI will not | affect the paths of its internal API that aren't exposed to users. | - */ + */ 'path' => env('HORIZON_PATH', 'horizon'), @@ -39,7 +39,7 @@ return [ | meta information required for it to function. It includes the list | of supervisors, failed jobs, job metrics, and other information. | - */ + */ 'use' => 'default', @@ -52,11 +52,11 @@ return [ | may modify the prefix when you are running multiple installations | of Horizon on the same server so that they don't have problems. | - */ + */ 'prefix' => env( 'HORIZON_PREFIX', - Str::slug(env('APP_NAME', 'laravel'), '_').'_horizon:' + Str::slug(env('APP_NAME', 'laravel'), '_') . '_horizon:' ), /* @@ -68,7 +68,7 @@ return [ | the chance to add your own middleware to this list or change any of | the existing middleware. Or, you can simply stick with this list. | - */ + */ 'middleware' => ['web'], @@ -81,7 +81,7 @@ return [ | will be fired. Every connection / queue combination may have its | own, unique threshold (in seconds) before this event is fired. | - */ + */ 'waits' => [ 'redis:default' => 60, @@ -96,7 +96,7 @@ return [ | persist the recent and failed jobs. Typically, recent jobs are kept | for one hour while all failed jobs are stored for an entire week. | - */ + */ 'trim' => [ 'recent' => 60, @@ -116,7 +116,7 @@ return [ | of completed jobs within the Horizon dashboard. This setting may be | used to fully remove any noisy jobs from the completed jobs list. | - */ + */ 'silenced' => [ // App\Jobs\ExampleJob::class, @@ -131,7 +131,7 @@ return [ | the metrics graph. This will get used in combination with Horizon's | `horizon:snapshot` schedule to define how long to retain metrics. | - */ + */ 'metrics' => [ 'trim_snapshots' => [ @@ -151,7 +151,7 @@ return [ | allowing a new instance of Horizon to start while the last | instance will continue to terminate each of its workers. | - */ + */ 'fast_termination' => false, @@ -164,7 +164,7 @@ return [ | supervisor may consume before it is terminated and restarted. For | configuring these limits on your workers, see the next section. | - */ + */ 'memory_limit' => 64, @@ -177,15 +177,18 @@ return [ | in all environments. These supervisors and settings handle all your | queued jobs and will be provisioned by Horizon during deployment. | - */ + */ 'defaults' => [ 'supervisor-1' => [ 'connection' => env('QUEUE_CONNECTION'), - 'queue' => json_decode(env('HORIZON_QUEUES','["default"]'), true), + 'queue' => json_decode( + env('HORIZON_QUEUES', '["default"]'), + true + ), 'balance' => 'auto', 'autoScalingStrategy' => 'time', - 'maxProcesses' => 1, + 'maxProcesses' => 3, 'maxTime' => 0, 'maxJobs' => 0, 'memory' => 128, diff --git a/src/config/queue.php b/src/config/queue.php index 92cfef7..ee58fcb 100644 --- a/src/config/queue.php +++ b/src/config/queue.php @@ -32,7 +32,7 @@ return [ 'sync' => [ 'driver' => 'sync', - ], + ], 'database' => [ 'driver' => 'database', @@ -40,7 +40,7 @@ return [ 'queue' => 'default', 'retry_after' => 90, 'after_commit' => false, - ], + ], 'beanstalkd' => [ 'driver' => 'beanstalkd', @@ -49,7 +49,7 @@ return [ 'retry_after' => 90, 'block_for' => 0, 'after_commit' => false, - ], + ], 'sqs' => [ 'driver' => 'sqs', @@ -60,7 +60,7 @@ return [ 'suffix' => env('SQS_SUFFIX'), 'region' => env('AWS_DEFAULT_REGION', 'us-east-1'), 'after_commit' => false, - ], + ], 'redis' => [ 'driver' => 'redis', @@ -69,11 +69,11 @@ return [ 'retry_after' => 90, 'block_for' => null, 'after_commit' => false, - ], + ], 'rabbitmq' => [ 'driver' => 'rabbitmq', - 'worker' => env('RABBITMQ_WORKER', 'default'), + 'worker' => env('RABBITMQ_WORKER', 'horizon'), 'hosts' => [ [ 'host' => env('RABBITMQ_HOST', '127.0.0.1'), @@ -81,17 +81,11 @@ return [ 'user' => env('RABBITMQ_USER', 'guest'), 'password' => env('RABBITMQ_PASSWORD', 'guest'), 'vhost' => env('RABBITMQ_VHOST', '/'), - ], - ], - 'options' => [ - 'queue' => [ - 'prioritize_delayed' => false, - 'queue_max_priority' => 10, - ], - ], - ], + ], + ], + ], - ], + ], /* |-------------------------------------------------------------------------- @@ -108,6 +102,6 @@ return [ 'driver' => env('QUEUE_FAILED_DRIVER', 'database-uuids'), 'database' => env('DB_CONNECTION', 'mysql'), 'table' => 'failed_jobs', - ], + ], - ]; +]; diff --git a/src/database/migrations/2024_01_25_041909_create_jobs_table.php b/src/database/migrations/2024_01_25_041909_create_jobs_table.php new file mode 100644 index 0000000..a786a89 --- /dev/null +++ b/src/database/migrations/2024_01_25_041909_create_jobs_table.php @@ -0,0 +1,36 @@ +bigIncrements('id'); + $table->string('queue')->index(); + $table->longText('payload'); + $table->unsignedTinyInteger('attempts'); + $table->unsignedInteger('reserved_at')->nullable(); + $table->unsignedInteger('available_at'); + $table->unsignedInteger('created_at'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('jobs'); + } +}; diff --git a/src/database/migrations/2024_01_29_014825_create_job_batches_table.php b/src/database/migrations/2024_01_29_014825_create_job_batches_table.php new file mode 100644 index 0000000..525b389 --- /dev/null +++ b/src/database/migrations/2024_01_29_014825_create_job_batches_table.php @@ -0,0 +1,39 @@ +string('id')->primary(); + $table->string('name'); + $table->integer('total_jobs'); + $table->integer('pending_jobs'); + $table->integer('failed_jobs'); + $table->longText('failed_job_ids'); + $table->mediumText('options')->nullable(); + $table->integer('cancelled_at')->nullable(); + $table->integer('created_at'); + $table->integer('finished_at')->nullable(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('job_batches'); + } +}; diff --git a/src/resources/views/socket.blade.php b/src/resources/views/socket.blade.php new file mode 100644 index 0000000..9ce99a0 --- /dev/null +++ b/src/resources/views/socket.blade.php @@ -0,0 +1,68 @@ + + + + + + Socket Client + + + +

Socket Client

+ +
+ + + + + + + diff --git a/src/routes/web.php b/src/routes/web.php index b130397..a47c33d 100644 --- a/src/routes/web.php +++ b/src/routes/web.php @@ -16,3 +16,5 @@ use Illuminate\Support\Facades\Route; Route::get('/', function () { return view('welcome'); }); + +Route::view('/socket', 'socket'); diff --git a/workerman b/workerman new file mode 160000 index 0000000..14099e0 --- /dev/null +++ b/workerman @@ -0,0 +1 @@ +Subproject commit 14099e070baf75f620f7fad7e261e5de75460692 diff --git a/workerman.log b/workerman.log new file mode 100644 index 0000000..f2a31aa --- /dev/null +++ b/workerman.log @@ -0,0 +1,317 @@ +2024-01-26 06:15:20 pid:3994 Workerman[socket.php] start in USER mode +2024-01-26 06:34:24 pid:3994 Workerman[socket.php] stopping ... +2024-01-26 06:34:24 pid:3994 Workerman[socket.php] has been stopped +2024-01-26 06:34:24 pid:4662 Workerman[socket.php] start in USER mode +2024-01-26 06:35:25 pid:4662 Workerman[socket.php] stopping ... +2024-01-26 06:35:25 pid:4662 Workerman[socket.php] has been stopped +2024-01-26 06:35:26 pid:4680 Workerman[socket.php] start in USER mode +2024-01-26 06:38:57 pid:4680 Workerman[socket.php] stopping ... +2024-01-26 06:38:57 pid:4680 Workerman[socket.php] has been stopped +2024-01-26 06:38:58 pid:4716 Workerman[socket.php] start in USER mode +2024-01-26 06:44:06 pid:4716 Workerman[socket.php] stopping ... +2024-01-26 06:44:06 pid:4716 Workerman[socket.php] has been stopped +2024-01-26 06:44:07 pid:4759 Workerman[socket.php] start in USER mode +2024-01-26 06:48:59 pid:4759 Workerman[socket.php] stopping ... +2024-01-26 06:48:59 pid:4759 Workerman[socket.php] has been stopped +2024-01-26 06:49:27 pid:4824 Workerman[socket.php] start in USER mode +2024-01-26 06:49:53 pid:4824 Workerman[socket.php] stopping ... +2024-01-26 06:49:53 pid:4824 Workerman[socket.php] has been stopped +2024-01-26 06:49:54 pid:4839 Workerman[socket.php] start in USER mode +2024-01-26 06:51:18 pid:4839 Workerman[socket.php] stopping ... +2024-01-26 06:51:18 pid:4839 Workerman[socket.php] has been stopped +2024-01-26 06:51:18 pid:4856 Workerman[socket.php] start in USER mode +2024-01-26 06:56:19 pid:4856 Workerman[socket.php] stopping ... +2024-01-26 06:56:19 pid:4856 Workerman[socket.php] has been stopped +2024-01-26 06:56:20 pid:4892 Workerman[socket.php] start in USER mode +2024-01-26 06:56:23 pid:4893 Error: Object of class Workerman\Connection\TcpConnection could not be converted to string in /root/bitnami-laravel-demo/workerman/socket.php:27 +Stack trace: +#0 /root/bitnami-laravel-demo/workerman/src/Connection/TcpConnection.php(719): {closure}() +#1 /root/bitnami-laravel-demo/workerman/src/Events/Select.php(452): Workerman\Connection\TcpConnection->baseRead() +#2 /root/bitnami-laravel-demo/workerman/src/Events/Select.php(384): Workerman\Events\Select->safeCall() +#3 /root/bitnami-laravel-demo/workerman/src/Worker.php(1641): Workerman\Events\Select->run() +#4 /root/bitnami-laravel-demo/workerman/src/Worker.php(1444): Workerman\Worker::forkOneWorkerForLinux() +#5 /root/bitnami-laravel-demo/workerman/src/Worker.php(1418): Workerman\Worker::forkWorkersForLinux() +#6 /root/bitnami-laravel-demo/workerman/src/Worker.php(578): Workerman\Worker::forkWorkers() +#7 /root/bitnami-laravel-demo/workerman/socket.php(41): Workerman\Worker::runAll() +#8 {main} +2024-01-26 06:56:23 pid:4892 worker[none:4893] exit with status 64000 +2024-01-26 06:56:40 pid:4892 Workerman[socket.php] stopping ... +2024-01-26 06:56:40 pid:4892 Workerman[socket.php] has been stopped +2024-01-26 06:56:41 pid:4910 Workerman[socket.php] start in USER mode +2024-01-26 06:56:42 pid:4911 Error: Object of class Workerman\Connection\TcpConnection could not be converted to string in /root/bitnami-laravel-demo/workerman/socket.php:27 +Stack trace: +#0 /root/bitnami-laravel-demo/workerman/src/Connection/TcpConnection.php(719): {closure}() +#1 /root/bitnami-laravel-demo/workerman/src/Events/Select.php(452): Workerman\Connection\TcpConnection->baseRead() +#2 /root/bitnami-laravel-demo/workerman/src/Events/Select.php(384): Workerman\Events\Select->safeCall() +#3 /root/bitnami-laravel-demo/workerman/src/Worker.php(1641): Workerman\Events\Select->run() +#4 /root/bitnami-laravel-demo/workerman/src/Worker.php(1444): Workerman\Worker::forkOneWorkerForLinux() +#5 /root/bitnami-laravel-demo/workerman/src/Worker.php(1418): Workerman\Worker::forkWorkersForLinux() +#6 /root/bitnami-laravel-demo/workerman/src/Worker.php(578): Workerman\Worker::forkWorkers() +#7 /root/bitnami-laravel-demo/workerman/socket.php(41): Workerman\Worker::runAll() +#8 {main} +2024-01-26 06:56:42 pid:4910 worker[none:4911] exit with status 64000 +2024-01-26 06:57:08 pid:4910 Workerman[socket.php] stopping ... +2024-01-26 06:57:08 pid:4910 Workerman[socket.php] has been stopped +2024-01-26 06:57:09 pid:4928 Workerman[socket.php] start in USER mode +2024-01-26 06:57:37 pid:4928 Workerman[socket.php] stopping ... +2024-01-26 06:57:37 pid:4928 Workerman[socket.php] has been stopped +2024-01-26 06:57:38 pid:4947 Workerman[socket.php] start in USER mode +2024-01-26 06:58:04 pid:4947 Workerman[socket.php] stopping ... +2024-01-26 06:58:04 pid:4947 Workerman[socket.php] has been stopped +2024-01-26 06:58:05 pid:4972 Workerman[socket.php] start in USER mode +2024-01-26 06:58:25 pid:4972 Workerman[socket.php] stopping ... +2024-01-26 06:58:25 pid:4972 Workerman[socket.php] has been stopped +2024-01-26 06:58:25 pid:4989 Workerman[socket.php] start in USER mode +2024-01-26 06:58:49 pid:4989 Workerman[socket.php] stopping ... +2024-01-26 06:58:49 pid:4989 Workerman[socket.php] has been stopped +2024-01-26 06:58:54 pid:5035 Workerman[socket.php] start in USER mode +2024-01-26 07:01:40 pid:5035 Workerman[socket.php] stopping ... +2024-01-26 07:01:40 pid:5035 Workerman[socket.php] has been stopped +2024-01-26 07:01:41 pid:5080 Workerman[socket.php] start in USER mode +2024-01-26 07:02:27 pid:5080 Workerman[socket.php] stopping ... +2024-01-26 07:02:27 pid:5080 Workerman[socket.php] has been stopped +2024-01-26 07:02:45 pid:5140 Workerman[socket.php] start in USER mode +2024-01-26 07:03:12 pid:5140 Workerman[socket.php] stopping ... +2024-01-26 07:03:12 pid:5140 Workerman[socket.php] has been stopped +2024-01-26 07:09:40 pid:5278 Workerman[socket.php] start in USER mode +2024-01-26 07:12:56 pid:5278 Workerman[socket.php] stopping ... +2024-01-26 07:12:56 pid:5278 Workerman[socket.php] has been stopped +2024-01-26 07:13:04 pid:5329 Workerman[socket.php] start in USER mode +2024-01-26 07:13:36 pid:5329 Workerman[socket.php] stopping ... +2024-01-26 07:13:36 pid:5329 Workerman[socket.php] has been stopped +2024-01-26 07:13:36 pid:5347 Workerman[socket.php] start in USER mode +2024-01-26 07:14:54 pid:5347 Workerman[socket.php] stopping ... +2024-01-26 07:14:54 pid:5347 Workerman[socket.php] has been stopped +2024-01-26 07:14:54 pid:5380 Workerman[socket.php] start in USER mode +2024-01-26 07:16:35 pid:5380 Workerman[socket.php] stopping ... +2024-01-26 07:16:35 pid:5380 Workerman[socket.php] has been stopped +2024-01-26 07:16:37 pid:5425 Workerman[socket.php] start in USER mode +2024-01-26 07:17:26 pid:5425 Workerman[socket.php] stopping ... +2024-01-26 07:17:26 pid:5425 Workerman[socket.php] has been stopped +2024-01-26 07:17:26 pid:5463 Workerman[socket.php] start in USER mode +2024-01-26 07:18:00 pid:5463 Workerman[socket.php] stopping ... +2024-01-26 07:18:00 pid:5463 Workerman[socket.php] has been stopped +2024-01-26 07:18:01 pid:5482 Workerman[socket.php] start in USER mode +2024-01-26 07:18:40 pid:5482 Workerman[socket.php] stopping ... +2024-01-26 07:18:40 pid:5482 Workerman[socket.php] has been stopped +2024-01-26 07:18:41 pid:5511 Workerman[socket.php] start in USER mode +2024-01-26 07:45:39 pid:5511 Workerman[socket.php] stopping ... +2024-01-26 07:45:39 pid:5511 Workerman[socket.php] has been stopped +2024-01-26 07:46:17 pid:5590 Workerman[socket.php] start in USER mode +2024-01-26 07:46:41 pid:5590 Workerman[socket.php] stopping ... +2024-01-26 07:46:41 pid:5590 Workerman[socket.php] has been stopped +2024-01-26 07:46:41 pid:5608 Workerman[socket.php] start in USER mode +2024-01-26 07:47:11 pid:5608 Workerman[socket.php] stopping ... +2024-01-26 07:47:11 pid:5608 Workerman[socket.php] has been stopped +2024-01-26 07:47:11 pid:5624 Workerman[socket.php] start in USER mode +2024-01-26 07:47:57 pid:5624 Workerman[socket.php] stopping ... +2024-01-26 07:47:57 pid:5624 Workerman[socket.php] has been stopped +2024-01-26 07:47:58 pid:5650 Workerman[socket.php] start in USER mode +2024-01-26 07:48:16 pid:5650 Workerman[socket.php] stopping ... +2024-01-26 07:48:16 pid:5650 Workerman[socket.php] has been stopped +2024-01-26 07:48:16 pid:5670 Workerman[socket.php] start in USER mode +2024-01-26 07:48:36 pid:5670 Workerman[socket.php] stopping ... +2024-01-26 07:48:36 pid:5670 Workerman[socket.php] has been stopped +2024-01-26 07:48:37 pid:5685 Workerman[socket.php] start in USER mode +2024-01-26 07:49:25 pid:5685 Workerman[socket.php] stopping ... +2024-01-26 07:49:25 pid:5685 Workerman[socket.php] has been stopped +2024-01-26 07:49:26 pid:5701 Workerman[socket.php] start in USER mode +2024-01-26 07:50:31 pid:5701 Workerman[socket.php] stopping ... +2024-01-26 07:50:31 pid:5701 Workerman[socket.php] has been stopped +2024-01-26 07:50:32 pid:5718 Workerman[socket.php] start in USER mode +2024-01-26 07:51:09 pid:5718 Workerman[socket.php] stopping ... +2024-01-26 07:51:09 pid:5718 Workerman[socket.php] has been stopped +2024-01-26 07:51:09 pid:5747 Workerman[socket.php] start in USER mode +2024-01-26 07:52:16 pid:5747 Workerman[socket.php] stopping ... +2024-01-26 07:52:16 pid:5747 Workerman[socket.php] has been stopped +2024-01-26 07:52:17 pid:5767 Workerman[socket.php] start in USER mode +2024-01-26 07:52:36 pid:5767 Workerman[socket.php] stopping ... +2024-01-26 07:52:36 pid:5767 Workerman[socket.php] has been stopped +2024-01-26 07:52:36 pid:5783 Workerman[socket.php] start in USER mode +2024-01-26 07:53:09 pid:5783 Workerman[socket.php] stopping ... +2024-01-26 07:53:09 pid:5783 Workerman[socket.php] has been stopped +2024-01-26 07:53:10 pid:5798 Workerman[socket.php] start in USER mode +2024-01-26 07:53:50 pid:5798 Workerman[socket.php] stopping ... +2024-01-26 07:53:50 pid:5798 Workerman[socket.php] has been stopped +2024-01-26 07:53:51 pid:5838 Workerman[socket.php] start in USER mode +2024-01-26 07:54:28 pid:5838 Workerman[socket.php] stopping ... +2024-01-26 07:54:28 pid:5838 Workerman[socket.php] has been stopped +2024-01-26 07:55:17 pid:5876 Workerman[socket.php] start in USER mode +2024-01-26 07:58:03 pid:5876 Workerman[socket.php] stopping ... +2024-01-26 07:58:03 pid:5876 Workerman[socket.php] has been stopped +2024-01-26 07:58:17 pid:5949 Workerman[socket.php] start in USER mode +2024-01-26 08:02:04 pid:5949 Workerman[socket.php] stopping ... +2024-01-26 08:02:04 pid:5949 Workerman[socket.php] has been stopped +2024-01-26 08:02:04 pid:5989 Workerman[socket.php] start in USER mode +2024-01-26 08:02:43 pid:5989 Workerman[socket.php] stopping ... +2024-01-26 08:02:43 pid:5989 Workerman[socket.php] has been stopped +2024-01-26 08:02:44 pid:6012 Workerman[socket.php] start in USER mode +2024-01-26 08:03:32 pid:6012 Workerman[socket.php] stopping ... +2024-01-26 08:03:32 pid:6012 Workerman[socket.php] has been stopped +2024-01-26 08:03:32 pid:6044 Workerman[socket.php] start in USER mode +2024-01-26 08:13:11 pid:6044 Workerman[socket.php] stopping ... +2024-01-26 08:13:11 pid:6044 Workerman[socket.php] has been stopped +2024-01-26 08:13:23 pid:6080 Workerman[socket.php] start in USER mode +2024-01-26 08:13:39 pid:6080 Workerman[socket.php] stopping ... +2024-01-26 08:13:39 pid:6080 Workerman[socket.php] has been stopped +2024-01-26 08:13:40 pid:6096 Workerman[socket.php] start in USER mode +2024-01-26 08:22:19 pid:6096 Workerman[socket.php] stopping ... +2024-01-26 08:22:19 pid:6096 Workerman[socket.php] has been stopped +2024-01-26 08:22:22 pid:6368 Workerman[socket.php] start in USER mode +2024-01-26 08:25:49 pid:6368 Workerman[socket.php] stopping ... +2024-01-26 08:25:49 pid:6368 Workerman[socket.php] has been stopped +2024-01-26 08:25:50 pid:6448 Workerman[socket.php] start in USER mode +2024-01-26 08:27:06 pid:6448 Workerman[socket.php] stopping ... +2024-01-26 08:27:06 pid:6448 Workerman[socket.php] has been stopped +2024-01-26 08:27:07 pid:6493 Workerman[socket.php] start in USER mode +2024-01-26 08:28:26 pid:6493 Workerman[socket.php] stopping ... +2024-01-26 08:28:26 pid:6493 Workerman[socket.php] has been stopped +2024-01-26 08:28:29 pid:6538 Workerman[socket.php] start in USER mode +2024-01-26 08:28:41 pid:6538 Workerman[socket.php] stopping ... +2024-01-26 08:28:41 pid:6538 Workerman[socket.php] has been stopped +2024-01-26 08:28:42 pid:6556 Workerman[socket.php] start in USER mode +2024-01-26 08:29:18 pid:6556 Workerman[socket.php] stopping ... +2024-01-26 08:29:18 pid:6556 Workerman[socket.php] has been stopped +2024-01-26 08:29:18 pid:6574 Workerman[socket.php] start in USER mode +2024-01-26 08:31:01 pid:6574 Workerman[socket.php] stopping ... +2024-01-26 08:31:01 pid:6574 Workerman[socket.php] has been stopped +2024-01-26 08:31:02 pid:6610 Workerman[socket.php] start in USER mode +2024-01-26 08:36:03 pid:6610 Workerman[socket.php] stopping ... +2024-01-26 08:36:03 pid:6610 Workerman[socket.php] has been stopped +2024-01-26 08:36:04 pid:6645 Workerman[socket.php] start in USER mode +2024-01-26 08:36:54 pid:6645 Workerman[socket.php] stopping ... +2024-01-26 08:36:54 pid:6645 Workerman[socket.php] has been stopped +2024-01-26 08:36:55 pid:6660 Workerman[socket.php] start in USER mode +2024-01-26 08:37:06 pid:6660 Workerman[socket.php] stopping ... +2024-01-26 08:37:06 pid:6660 Workerman[socket.php] has been stopped +2024-01-26 08:37:07 pid:6676 Workerman[socket.php] start in USER mode +2024-01-26 08:37:54 pid:6676 Workerman[socket.php] stopping ... +2024-01-26 08:37:54 pid:6676 Workerman[socket.php] has been stopped +2024-01-26 08:37:54 pid:6695 Workerman[socket.php] start in USER mode +2024-01-26 08:38:33 pid:6695 Workerman[socket.php] stopping ... +2024-01-26 08:38:33 pid:6695 Workerman[socket.php] has been stopped +2024-01-26 08:38:33 pid:6727 Workerman[socket.php] start in USER mode +2024-01-26 08:39:39 pid:6727 Workerman[socket.php] stopping ... +2024-01-26 08:39:39 pid:6727 Workerman[socket.php] has been stopped +2024-01-26 08:39:40 pid:6743 Workerman[socket.php] start in USER mode +2024-01-26 08:40:27 pid:6743 Workerman[socket.php] stopping ... +2024-01-26 08:40:27 pid:6743 Workerman[socket.php] has been stopped +2024-01-26 08:40:28 pid:6767 Workerman[socket.php] start in USER mode +2024-01-26 08:41:23 pid:6767 Workerman[socket.php] stopping ... +2024-01-26 08:41:23 pid:6767 Workerman[socket.php] has been stopped +2024-01-26 08:41:24 pid:6786 Workerman[socket.php] start in USER mode +2024-01-26 08:41:57 pid:6786 Workerman[socket.php] stopping ... +2024-01-26 08:41:57 pid:6786 Workerman[socket.php] has been stopped +2024-01-26 08:41:57 pid:6809 Workerman[socket.php] start in USER mode +2024-01-26 08:41:59 pid:6810 Error: Call to undefined method Workerman\Connection\TcpConnection::getRemoteUri() in /root/bitnami-laravel-demo/workerman/socket.php:13 +Stack trace: +#0 /root/bitnami-laravel-demo/workerman/src/Worker.php(2525): {closure}() +#1 /root/bitnami-laravel-demo/workerman/src/Events/Select.php(452): Workerman\Worker->acceptTcpConnection() +#2 /root/bitnami-laravel-demo/workerman/src/Events/Select.php(384): Workerman\Events\Select->safeCall() +#3 /root/bitnami-laravel-demo/workerman/src/Worker.php(1641): Workerman\Events\Select->run() +#4 /root/bitnami-laravel-demo/workerman/src/Worker.php(1444): Workerman\Worker::forkOneWorkerForLinux() +#5 /root/bitnami-laravel-demo/workerman/src/Worker.php(1418): Workerman\Worker::forkWorkersForLinux() +#6 /root/bitnami-laravel-demo/workerman/src/Worker.php(578): Workerman\Worker::forkWorkers() +#7 /root/bitnami-laravel-demo/workerman/socket.php(46): Workerman\Worker::runAll() +#8 {main} +2024-01-26 08:41:59 pid:6809 worker[none:6810] exit with status 64000 +2024-01-26 08:42:41 pid:6809 Workerman[socket.php] stopping ... +2024-01-26 08:42:41 pid:6809 Workerman[socket.php] has been stopped +2024-01-26 08:42:42 pid:6826 Workerman[socket.php] start in USER mode +2024-01-26 08:42:43 pid:6827 Error: Call to undefined method Workerman\Connection\TcpConnection::getHeaders() in /root/bitnami-laravel-demo/workerman/socket.php:13 +Stack trace: +#0 /root/bitnami-laravel-demo/workerman/src/Worker.php(2525): {closure}() +#1 /root/bitnami-laravel-demo/workerman/src/Events/Select.php(452): Workerman\Worker->acceptTcpConnection() +#2 /root/bitnami-laravel-demo/workerman/src/Events/Select.php(384): Workerman\Events\Select->safeCall() +#3 /root/bitnami-laravel-demo/workerman/src/Worker.php(1641): Workerman\Events\Select->run() +#4 /root/bitnami-laravel-demo/workerman/src/Worker.php(1444): Workerman\Worker::forkOneWorkerForLinux() +#5 /root/bitnami-laravel-demo/workerman/src/Worker.php(1418): Workerman\Worker::forkWorkersForLinux() +#6 /root/bitnami-laravel-demo/workerman/src/Worker.php(578): Workerman\Worker::forkWorkers() +#7 /root/bitnami-laravel-demo/workerman/socket.php(46): Workerman\Worker::runAll() +#8 {main} +2024-01-26 08:42:43 pid:6826 worker[none:6827] exit with status 64000 +2024-01-26 08:43:12 pid:6826 Workerman[socket.php] stopping ... +2024-01-26 08:43:12 pid:6826 Workerman[socket.php] has been stopped +2024-01-26 08:43:12 pid:6843 Workerman[socket.php] start in USER mode +2024-01-26 08:43:48 pid:6843 Workerman[socket.php] stopping ... +2024-01-26 08:43:48 pid:6843 Workerman[socket.php] has been stopped +2024-01-26 08:43:48 pid:6859 Workerman[socket.php] start in USER mode +2024-01-26 08:44:10 pid:6859 Workerman[socket.php] stopping ... +2024-01-26 08:44:10 pid:6859 Workerman[socket.php] has been stopped +2024-01-26 08:44:11 pid:6875 Workerman[socket.php] start in USER mode +2024-01-26 08:44:22 pid:6875 Workerman[socket.php] stopping ... +2024-01-26 08:44:22 pid:6875 Workerman[socket.php] has been stopped +2024-01-26 08:44:23 pid:6887 Workerman[socket.php] start in USER mode +2024-01-26 08:46:37 pid:6887 Workerman[socket.php] stopping ... +2024-01-26 08:46:37 pid:6887 Workerman[socket.php] has been stopped +2024-01-26 08:46:37 pid:6930 Workerman[socket.php] start in USER mode +2024-01-26 08:46:51 pid:6930 Workerman[socket.php] stopping ... +2024-01-26 08:46:51 pid:6930 Workerman[socket.php] has been stopped +2024-01-26 08:46:51 pid:6945 Workerman[socket.php] start in USER mode +2024-01-26 08:49:26 pid:6945 Workerman[socket.php] stopping ... +2024-01-26 08:49:26 pid:6945 Workerman[socket.php] has been stopped +2024-01-26 08:49:27 pid:6971 Workerman[socket.php] start in USER mode +2024-01-26 08:49:38 pid:6971 Workerman[socket.php] stopping ... +2024-01-26 08:49:38 pid:6971 Workerman[socket.php] has been stopped +2024-01-26 08:49:38 pid:6986 Workerman[socket.php] start in USER mode +2024-01-26 08:52:34 pid:6986 Workerman[socket.php] stopping ... +2024-01-26 08:52:34 pid:6986 Workerman[socket.php] has been stopped +2024-01-26 08:52:35 pid:7020 Workerman[socket.php] start in USER mode +2024-01-26 08:54:18 pid:7020 Workerman[socket.php] stopping ... +2024-01-26 08:54:18 pid:7020 Workerman[socket.php] has been stopped +2024-01-26 08:54:19 pid:7057 Workerman[socket.php] start in USER mode +2024-01-26 08:54:20 pid:7058 TypeError: Workerman\Protocols\Ws::encode(): Argument #2 ($connection) must be of type Workerman\Connection\AsyncTcpConnection, Workerman\Connection\TcpConnection given, called in /root/bitnami-laravel-demo/workerman/src/Connection/TcpConnection.php on line 395 and defined in /root/bitnami-laravel-demo/workerman/src/Protocols/Ws.php:241 +Stack trace: +#0 /root/bitnami-laravel-demo/workerman/src/Connection/TcpConnection.php(395): Workerman\Protocols\Ws::encode() +#1 /root/bitnami-laravel-demo/workerman/socket.php(15): Workerman\Connection\TcpConnection->send() +#2 /root/bitnami-laravel-demo/workerman/src/Worker.php(2525): {closure}() +#3 /root/bitnami-laravel-demo/workerman/src/Events/Select.php(452): Workerman\Worker->acceptTcpConnection() +#4 /root/bitnami-laravel-demo/workerman/src/Events/Select.php(384): Workerman\Events\Select->safeCall() +#5 /root/bitnami-laravel-demo/workerman/src/Worker.php(1641): Workerman\Events\Select->run() +#6 /root/bitnami-laravel-demo/workerman/src/Worker.php(1444): Workerman\Worker::forkOneWorkerForLinux() +#7 /root/bitnami-laravel-demo/workerman/src/Worker.php(1418): Workerman\Worker::forkWorkersForLinux() +#8 /root/bitnami-laravel-demo/workerman/src/Worker.php(578): Workerman\Worker::forkWorkers() +#9 /root/bitnami-laravel-demo/workerman/socket.php(45): Workerman\Worker::runAll() +#10 {main} +2024-01-26 08:54:20 pid:7058 TypeError: Workerman\Protocols\Ws::onClose(): Argument #1 ($connection) must be of type Workerman\Connection\AsyncTcpConnection, Workerman\Connection\TcpConnection given, called in /root/bitnami-laravel-demo/workerman/src/Connection/TcpConnection.php on line 1028 and defined in /root/bitnami-laravel-demo/workerman/src/Protocols/Ws.php:338 +Stack trace: +#0 /root/bitnami-laravel-demo/workerman/src/Connection/TcpConnection.php(1028): Workerman\Protocols\Ws::onClose() +#1 /root/bitnami-laravel-demo/workerman/src/Connection/TcpConnection.php(900): Workerman\Connection\TcpConnection->destroy() +#2 /root/bitnami-laravel-demo/workerman/src/Worker.php(2477): Workerman\Connection\TcpConnection->close() +#3 /root/bitnami-laravel-demo/workerman/src/Worker.php(1949): Workerman\Worker->stop() +#4 [internal function]: Workerman\Worker::Workerman\{closure}() +#5 /root/bitnami-laravel-demo/workerman/src/Worker.php(1949): array_walk() +#6 /root/bitnami-laravel-demo/workerman/src/Connection/ConnectionInterface.php(178): Workerman\Worker::stopAll() +#7 /root/bitnami-laravel-demo/workerman/src/Connection/TcpConnection.php(397): Workerman\Connection\ConnectionInterface->error() +#8 /root/bitnami-laravel-demo/workerman/socket.php(15): Workerman\Connection\TcpConnection->send() +#9 /root/bitnami-laravel-demo/workerman/src/Worker.php(2525): {closure}() +#10 /root/bitnami-laravel-demo/workerman/src/Events/Select.php(452): Workerman\Worker->acceptTcpConnection() +#11 /root/bitnami-laravel-demo/workerman/src/Events/Select.php(384): Workerman\Events\Select->safeCall() +#12 /root/bitnami-laravel-demo/workerman/src/Worker.php(1641): Workerman\Events\Select->run() +#13 /root/bitnami-laravel-demo/workerman/src/Worker.php(1444): Workerman\Worker::forkOneWorkerForLinux() +#14 /root/bitnami-laravel-demo/workerman/src/Worker.php(1418): Workerman\Worker::forkWorkersForLinux() +#15 /root/bitnami-laravel-demo/workerman/src/Worker.php(578): Workerman\Worker::forkWorkers() +#16 /root/bitnami-laravel-demo/workerman/socket.php(45): Workerman\Worker::runAll() +#17 {main} +2024-01-26 08:54:20 pid:7057 worker[none:7058] exit with status 64000 +2024-01-26 08:54:46 pid:7057 Workerman[socket.php] stopping ... +2024-01-26 08:54:46 pid:7057 Workerman[socket.php] has been stopped +2024-01-26 08:54:51 pid:7075 Workerman[socket.php] start in USER mode +2024-01-27 01:26:11 pid:4058 Workerman[socket.php] start in USER mode +2024-01-27 01:28:29 pid:4058 Workerman[socket.php] stopping ... +2024-01-27 01:28:29 pid:4058 Workerman[socket.php] has been stopped +2024-01-27 01:28:29 pid:4121 Workerman[socket.php] start in USER mode +2024-01-27 01:29:23 pid:4121 Workerman[socket.php] stopping ... +2024-01-27 01:29:23 pid:4121 Workerman[socket.php] has been stopped +2024-01-27 01:29:24 pid:4132 Workerman[socket.php] start in USER mode +2024-01-27 01:30:01 pid:4132 Workerman[socket.php] stopping ... +2024-01-27 01:30:01 pid:4132 Workerman[socket.php] has been stopped +2024-01-27 01:30:01 pid:4150 Workerman[socket.php] start in USER mode +2024-01-27 01:30:26 pid:4150 Workerman[socket.php] stopping ... +2024-01-27 01:30:26 pid:4150 Workerman[socket.php] has been stopped +2024-01-27 01:30:31 pid:4219 Workerman[socket.php] start in USER mode +2024-01-27 01:31:20 pid:4219 Workerman[socket.php] stopping ... +2024-01-27 01:31:20 pid:4219 Workerman[socket.php] has been stopped +2024-01-27 01:31:21 pid:4240 Workerman[socket.php] start in USER mode +2024-01-29 01:22:20 pid:3386 Workerman[socket.php] start in USER mode +2024-01-29 01:22:20 pid:3386 Master pid:4240 is not alive