【发布时间】:2016-04-19 19:28:21
【问题描述】:
php-Resque 工作人员经常会在工作上卡住几天,最终所有工作人员都卡住了,网站停止工作。php-resque 库是使用 Composer 安装的。
问题:我想手动进行修剪。如何访问此功能pruneDeadWorkers()?如果发现死掉的工人,我该如何重新启动它们?
【问题讨论】:
标签: php resque composer-php php-resque
php-Resque 工作人员经常会在工作上卡住几天,最终所有工作人员都卡住了,网站停止工作。php-resque 库是使用 Composer 安装的。
问题:我想手动进行修剪。如何访问此功能pruneDeadWorkers()?如果发现死掉的工人,我该如何重新启动它们?
【问题讨论】:
标签: php resque composer-php php-resque
要手动修剪worker,包含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。
为避免工人死亡,请使用pcntl_fork 编译您的 php,以在分叉中执行您的作业,并将它们与工人隔离。
【讨论】:
首先找到工人列表:
Resque_Worker::all();
这包含工人ID
根据php-resque doc
输入命令行
`kill workers id`
【讨论】: