我有一个 WorkerPool 类,它的数组声明为
private $live_resources = array();
在类中有一个循环,在一定条件下,像这样将一个项目添加到数组中
$this->live_resources[$id] = 0;
在此之后,有一个工人作为一个新进程启动。一旦工作人员完成了一项任务,它就会通过回调的方式调用 WorkerPool 上名为 live_fixture_processed() 的方法。回调定义为
$callback = array($this, 'live_fixture_processed');
然后在worker中调用回调
call_user_func($callback, $id);
此方法像这样更改数组中的值
$this->live_resources[$id] = 1;
然后它调用另一个使用该数组的方法,对数组的更改看起来已经成功。
与此同时,该类继续其循环,一段时间后它开始使用 $this->live 资源数组,但该值已恢复为 0!
我还添加了一个字符串变量
private $called = ''
这也在回调中设置,但在后续循环中也没有更改。回调中使用的私有变量的范围是否存在问题?