【发布时间】:2015-12-19 00:52:41
【问题描述】:
我创建了一个简单的类:
class Event {
var $a;
var $b;
var $c;
function __construct($a, $b, $c)
{
$this->a= $a;
$this->b = $b;
$this->c= $c;
}
}
然后我创建了另一个扩展 Thread 的类:
class WorkerThread extends Thread
{
private $myUrl;
private $eventsArr;
private $counterDebug;
private $postdata;
public function __construct($myUrl, $postdata)
{
$this->myUrl = $myUrl;
$this->postdata = $postdata;
$this->eventsArr = array();
$this->counterDebug=0;
}
public function run()
{
$flag=false;
foreach ($json as $key => $value) {
$this->counterDebug++;
/* Death event */
$event= new Event($a, $b, $c);
array_push($this->eventsArr, $event);
}
}
}
}
echo (count($this->eventsArr));
echo (json_encode($event));
echo ("\n" . $this->counterDebug);
if($flag && count($this->events)>0){
...
当尝试将新创建的对象添加到数组中时,它保持为空。
我从调试中得出的结论:
1) 对象被创建。
2) eventsArr[]= $event 和 array_push 都不起作用。
3) 我已经设置了一个计数器来验证对象正在被创建并且应该被添加到数组中。
我做错了什么?
p.s-
为了简化操作,我删除了不相关部分代码。
【问题讨论】:
-
我认为您应该创建包含所有事件的临时数组,然后将其提供给 $eventsArr
-
你试图在 PHP 中解决什么问题,而你最终使用了
pthreads?它们工作正常但不需要那么频繁?作为“实验”也不错。除了您不允许任何其他 pthread 运行? pthreads 必须给出一些结果然后wait直到他们重新获得控制权?