【发布时间】:2014-10-28 08:53:04
【问题描述】:
我已经成功配置并使用了 gearman 及其 pecl php 扩展。我正在使用它在后台执行有关长 sql 查询的长过程。顺便说一句,我正在使用 Yii,如果这个细节有帮助的话。
这是我的使用方法:
public function actionProcessWithGearman(){
$output = shell_exec('gnome-terminal -e "php workers/worker.php" > /dev/null 2>/dev/null &');
$client = new GearmanClient();
$client->addServer();
$result = $client->doBackground('executeJob',//parameters);
}
一些细节:
如果你注意到我首先运行了一个 gnome-terminal,这样我就可以看到进程而不是直接使用 php 命令,我还添加了 /dev/null 以便它不再等待响应。然后工人被唤醒并运行工作。
问题:
当此操作多次执行或由不同客户端中的多个用户执行时,会出现我的问题,结果,正在实例化多个运行 worker.php 的终端.
我如何只有一个工作人员?即使我可以为不同客户端中的多个用户提供多个工作人员,我如何在每次任务完成时关闭工作人员?
【问题讨论】:
标签: php yii backgroundworker worker gearman