Использование Supervisor для запуска веб-сокетов и очереди с храповым механизмом в laravel

Я сделал команду ремесленника для запуска веб-сокетов на некотором порту, как показано ниже

class webSockets extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'run:socket {port?}';

/**
* The console command description.
*
* @var string
*/
protected $description = 'Run websockets for specified port';

/**
* Create a new command instance.
*
* @return void
*/
public function __construct(RedisInterface $redis)
{
$this->redis=$redis;
parent::__construct();
}

/**
* Execute the console command.
*
* @return mixed
*/
public function handle()
{
//
$port = $this->argument('port');
if($port=='8182') {
$server = IoServer::factory(
new SocketController($this->redis),$port
);
}
else if($port=='8181'){
$server = IoServer::factory(
new Socket1Controller($this->redis),$port
);
}$server->run();
}
}

Я могу легко запустить эти сокеты, выполнив команду ремесленника, как показано ниже

php artisan run:socket 8181
php artisan run :socket 8182

Мне нужно развернуть его на рабочем сервере, где тысячи устройств подключены к этим веб-сокетам. Я пытался Supervisor, чтобы демонизировать процесс, но не повезло

Мой файл conf выглядит как ниже

[program:ratchet]
command                 = php /var/www/v3 artisan run:socket 8181;php /var/www/v3 artisan run:socket 8182
process_name            = Ratchet
numprocs                = 1
autostart               = true
autorestart             = true
stdout_logfile          = ./logs/info.log
stderr_logfile          = ./logs/error.log

Я понял, что порты 8181 и 8182 свободны и не получают никаких сообщений.

Когда я пытался sudo service supervisorctl Я видел все процессы имеют время безотказной работы 0:00:00 и разные пиды

laravel_queue                    RUNNING   pid 62246, uptime 0:00:00
ratchet:Ratchet                  RUNNING   pid 62245, uptime 0:00:00
supervisor> status
laravel_queue                    RUNNING   pid 62305, uptime 0:00:00
ratchet:Ratchet                  RUNNING   pid 62304, uptime 0:00:00
supervisor> status
laravel_queue                    RUNNING   pid 62419, uptime 0:00:00
ratchet:Ratchet                  RUNNING   pid 62418, uptime 0:00:00
supervisor> status
laravel_queue                    RUNNING   pid 62553, uptime 0:00:00
ratchet:Ratchet                  RUNNING   pid 62552, uptime 0:00:00
supervisor> status
laravel_queue                    RUNNING   pid 62689, uptime 0:00:00
ratchet:Ratchet                  RUNNING   pid 62688, uptime 0:00:00
supervisor> status
laravel_queue                    RUNNING   pid 62819, uptime 0:00:00
ratchet:Ratchet                  RUNNING   pid 62818, uptime 0:00:00
supervisor> status

Я что-то пропустил?

1

Решение

Мне удалось это исправить, сделав отдельный процесс на супервизоре

  1. Управление очередью

В /etc/supervisord/conf.d/ создайте laravel_queue.conf:

[program:laravel_queue]
command= php artisan queue:listen redis --timeout=7200
directory=/var/www/gpsv3
stderr_logfile=/var/www/gpsv3/storage/logs/laraqueue.err.log
stdout_logfile=/var/www/gpsv3/storage/logs/laraqueue.out.log
redirect_stderr=true

Дайте ему права на выполнение: chmod + x laravel_queue.conf

Теперь обновите Supervisor с помощью: sudo supervisorctl reread. И начните использовать эти изменения с: sudo supervisorctl update.

  1. слушатель сокета

В /etc/supervisord/conf.d/ создайте socket.conf:

[program:socket]
command= php artisan run:socket 8182
directory=/var/www/gpsv3
stderr_logfile=/var/www/gpsv3/storage/logs/socket.err.log
stdout_logfile=/var/www/gpsv3/storage/logs/socket.out.log
redirect_stderr=true

Дайте ему права на выполнение: chmod + x socket.conf

Теперь обновите Supervisor с помощью: sudo supervisorctl reread. И начните использовать эти изменения с: sudo supervisorctl update.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]