Я недавно работал с многопоточностью в php, используя pthreads, используя следующий код:
$pool = new \Pool(count($chunks), Autoloader::class, [APP_PATH . '/loader.php']);
foreach($chunks as $key => $chunk) {
$pool->submit(new MyTask($key, $chunk));
}
while ($pool->collect());
$pool->shutdown();
Это работало хорошо, но мне нужно обновить мой код, заменив его параллельным, заменив Pthreads. Я попробовал следующее, но оно зависает в первой Задаче, а другие никогда не выполняются.
$cli = APP_PATH . '/loader.php';
foreach($chunks as $key => $chunk) {
$parallel->run(function() use ($cli, $key, $chunk) {
if(!defined('ROOT')) { require $cli; }
$my_task = new MyTask($key, $chunk);
$my_task->run();
});
}
Кто-нибудь знает, как решить эту проблему?
Спасибо