我尝试使用示例(Stacking.php)中的代码:
$worker = new ExampleWorker("My Worker Thread");
$work = array();
while($i++<10){
printf(
"Stacking: %d/%d'n", $i, $worker->stack($work[]=new Work(array(rand()*100)))
);
}
我想采用这个例子,将其放入无限WHILE循环中,等待数据库中的事件,并在它们出现时堆叠新元素。
将会有大量的事件要堆栈,我不能将它们全部存储在$work数组中,我想以某种方式清理它,或者根本不使用它。
问题是当我改变时:
$worker->stack($work[]=new Work(array(rand()*100))
至
$worker->stack(new Work(array(rand()*100))
PHP进程在第一个工作人员完成后出现segfoots
如何将$worker->stack放入无限循环中,而不必存储对每个堆叠工作的引用?
排序答案为;你不能。
实现方式和原因的详细信息如下所示:https://gist.github.com/krakjoe/6437782
我说的任何话都只是重复,在任何情况下,你都会从完整阅读整个文件中受益。