Слияние кода завершено, страница обновится автоматически
taskPHP / core / lib / WorkerExe.php
Примерно в 60-й строке кода:
register_shutdown_function(array($this,'shutdown_function'));
while ($run===true||$run-->0){
$this->_worker=Queue::brPop(static::$_worker_exec,0);//Взять из очереди
if($this->_worker==null){
continue;
}
if (!($this->_worker instanceof Task)){
unset($this->_worker);
continue;
}
try{
ob_start();
$this->_worker->run();
$data=ob_get_contents();
ob_end_clean();
}catch(Exception $e){
Log::input(array($this->_worker,$e->getMessage()),1);
}
unset($data);
}
Этот код ясно показывает, что задача извлекается из очереди и выполняется синхронно. В реальных проектах это неприемлемо, так как задачи должны выполняться одновременно или перекрываться во времени.
Мои рекомендации:
1: PHP не подходит для создания серверных систем;
2: Если всё же необходимо реализовать, то производительность и эффективность выполнения будут очень низкими, а затраты не оправдают результат;
3: Лучше использовать PHP для разработки веб-приложений.