从php线程获取返回值

时间:2016-05-30 13:46:43

标签: php pthreads

这是示例代码,我正在

上工作
class workerThread extends Thread {
  public function __construct($i){
     $this->i=$i;
}

public function run(){
  while(true){
   echo $this->i;
   sleep(1);
  }
}
}

for($i=0;$i<50;$i++){
$workers[$i]=new workerThread($i);
$workers[$i]->start();
}

从run()获取返回值的适当方法是什么,或者应该为回调创建另一个函数?

1 个答案:

答案 0 :(得分:1)

首先,你必须等待所有线程完成。

所以在你的初始循环之后,你应该再做一个循环,等待每个工人完成。有thread->join函数可以将主线程与子线程同步。导致停止执行并等待子线程完成。所以,如果你打电话给if($worker->join()) {...},你可以肯定,工人已经完成了工作:)

http://php.net/manual/de/thread.join.php

第二,线程不返回值。而是在类中创建一个变量,例如result,并在线程运行期间用数据填充它。最后收集(join之后)$worker->result

第三,你当前的线程甚至无法报告任何结果,因为它们永远运行。从我不明白的问题,如果你想让它们永远运行?因为如果你这样做,会有更复杂的步骤来持续获得结果。