我已成功配置和使用齿轮工及其pecl php扩展。我使用它来执行一个关于后台长sql查询的长进程。我使用Yii btw,如果这个细节有帮助。启动和停止齿轮工人php
下面是我如何使用它:
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被实例化,我的问题就出现了。
我如何让只有一名工人?,即使我可以在几个不同的客户端有几个用户,每次完成任务时我该如何关闭一个工人?