我試圖讓Pthreads工作,但不幸的是,所有過時的文檔都很難弄清楚什麼是當前和發生了什麼變化。以及沒有得到任何錯誤返回。pthreads掛起/卡在池中 - >提交
運行PHP7.2.0-dev的與並行線程的最新版本和Xdebug
目前我有
<?php
$THREADS = 3;
class UptimeWorker extends Worker {
public function start(?int $options = null) {
return parent::start(PTHREADS_INHERIT_CLASSES | PTHREADS_INHERIT_CONSTANTS | PTHREADS_INHERIT_FUNCTIONS);
}
}
class UptimeWork extends Threaded {
private $i;
public function __construct(int $i) {
$this->i = $i;
}
public function run() {
echo "I am ".$i.PHP_EOL;
$this->setGarbage();
}
}
$pool = new Pool($THREADS, UptimeWorker::class);
for($i=0;$i<10;$i++) {
var_dump($i);
$pool->submit(new UptimeWork($i));
}
echo "pre-shutdown".PHP_EOL;
$pool->shutdown();
echo "finished".PHP_EOL;
,唯一的輸出是從for
語句中的第var_dump
呼叫int(0)
,從那裏這個過程似乎掛起,它不會退出,也不會有更多的輸出。
這裏發生了什麼問題以及需要發生什麼才能使其工作?
只是別人必然會問的一些問題,所以不妨將它們排除在外。你是否嘗試過使用php7(no-dev)上的代碼,而沒有使用xDebug?您是自行構建庫還是下載用於Windows(因爲Windows沒有可用的7.2版本)?當你說「沒有錯誤」,包括error.log文件? – Robbie