【发布时间】:2013-02-23 19:36:16
【问题描述】:
是否可以在所有工作人员都在工作时让客户端空闲?
我有以下情况:
$client= new GearmanClient();
$client->addServer();
$data = array(thousands of entries);
foreach($data as $dt) {
$client->doBackground('doFancy', $dt);
}
当我运行它时,它会产生数千个队列,甚至会导致内存过载。
在 foreach 循环继续分配新作业之前,是否可以等待工作人员空闲?
【问题讨论】:
-
这似乎违背了使用队列的全部意义。您发送的每个任务有多大?您能否将它们打包成更大的块以减少您请求的任务量?
-
@Louis-PhilippeHuberdeau 每个任务将运行大约。 10 秒,但是像现在这样,我会推送 300000 个任务。
-
如果处理信息的php脚本可以处理信息的大小,我很难相信Gearman守护进程不会处理它。它比 php 脚本更健壮..