Вызов скрипта Python из PHP с использованием многопоточности

Я использую PHP для отображения вывода Python в браузере. Поскольку для вывода вывода скрипту Python требуется много времени, пользовательский интерфейс зависает до тех пор, пока скрипт Python не завершит свое выполнение.

Pthreads для Windows включена в PHP для многопоточности функции shell_exec(), которая вызывает скрипт Python. Несмотря на использование Pthreads, пользовательский интерфейс все еще зависает.

Вот код:

$output_customer_churn_prediction = "";

class WorkerThreads extends Thread {
    private $workerId;

    public function __construct($id)
    {
        $this->workerId = $id;
    }

    public function run()
    {
        sleep(rand(0, 3));
        echo "Worker {$this->workerId} ran" . PHP_EOL;
        $output_customer_churn_prediction = shell_exec('python '.$_SERVER['DOCUMENT_ROOT'].'/analytics/python/neural-net-prediction-customer-attrition.py');
        print_r($output_customer_churn_prediction);
    }
}

$workers[0] = new WorkerThreads(0);
$workers[0]->start();

print_r($output_customer_churn_prediction, true); 

Даже с многопоточностью пользовательский интерфейс (сгенерированный PHP) зависает при вызове скрипта Python Neural Net.

Что может быть причиной?

0 ответов

PHP кэширует вывод. Вам необходимо отключить кеш вывода. Тогда ваш браузер не зависнет.

См. Ob_flush()

Другие вопросы по тегам