Как вручную обрезать и перезапустить работников php-resque

Очень часто работники php-Resque застряли на работе на несколько дней, и в конце концов все работники застряли, и сайт перестал работать. php-resque библиотека была установлена ​​с помощью Composer.

Вопрос: я хочу сделать обрезку вручную. Как мне получить доступ к этой функции pruneDeadWorkers()? И если найдены мертвые рабочие, как мне их перезапустить?

Просмотреть исходный код

2 ответа

Решение

Чтобы вручную обрезать работников, включите файл vendor/chrisboulton/php-resque/lib/Resque/Worker.php, создайте экземпляр Worker, а затем вызовите pruneDeadWorkers ();

<?php 
include 'vendor/chrisboulton/php-resque/lib/Resque/Worker.php'; // If you're not already using composer autoloader

$worker = new Worker('default'); // the argument doesn't matter
$worker->pruneDeadWorkers();

php-resque не поставляется с функцией перезапуска рабочих, посмотрите на fresque для этого.

Чтобы избежать мертвых работников, скомпилируйте свой php с pcntl_fork, чтобы выполнить ваши задания в вилке, и изолировать их от рабочих.

Сначала найти рабочий список: Resque_Worker::all();это содержит идентификатор работника в соответствии с типом документа php-resque в командной строке

`kill workers id`
Другие вопросы по тегам