Как я могу использовать результат возврата скрипта python PHP в реальном времени?

Я использовал PHP для успешного вызова скрипта python и получил результат. Но я должен дождаться окончания сценария без вывода. Он выглядит недружелюбно с моим клиентом.

Как я могу вернуть результаты скрипта на веб-сайт PHP в режиме реального времени?

Например, для кода ниже я хочу, чтобы веб-сайт PHP показывал выходное сообщение в реальном времени, а не показывал их вместе в конце. Как я могу изменить свой код? Спасибо .

Код PHP:

<?php $k = $_REQUEST['k']; if (!empty($k)) { $k = trim($k); $a = array(); exec('python ./some.py '.$k, $a); echo $a[0]; } ?> 

Код Python:

 #!/usr/bin/env python #-*- coding:utf-8 -*- import sys def do_some(a): print 'test1' time.sleep(30) print 'test2' if __name__ == '__main__': print 'Now the python scritp running' time.sleep(20) a = sys.argv[1] if a: print 'Now print something' T = do_some(a) 

По спецификации, exec останавливает вызывающую программу до конца вызываемого абонента. После этого вы возвращаете результат в переменной.

Если вы хотите отправить данные, как только они будут созданы, вы должны использовать popen . Он откроет новый процесс, но не заблокирует вызывающего абонента. Таким образом, вы можете выполнять другие задачи, такие как цикл, чтобы читать вывод подпроцесса по очереди, чтобы отправить его вашему клиенту. Что-то вроде этого:

 $handle = popen("python ./some.py ", 'r'); while(!feof($handle)) { $buffer = fgets($handle); echo "$buffer<br/>\n"; ob_flush(); } pclose($handle)