Как вручную обрезать и перезапустить работников 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`