当所有工作人员都在工作时,是否可以使客户端空闲?
我有以下情况:
$client= new GearmanClient();
$client->addServer();
$data = array(thousands of entries);
foreach($data as $dt) {
$client->doBackground('doFancy', $dt);
}
当我运行这个程序时,它会产生数千个队列,甚至会使内存过载。
是否可以等待工人空闲,直到foreach循环继续分配新作业?
您可以为队列大小创建计数器,并为完整事件设置回调。在这个回调中,您必须递减计数器并检查计数器,如果它的值小于N,则将添加新的一组任务并递增计数器。