如何使用PHP调用python脚本实时返回结果?

如何使用PHP调用python脚本实时返回结果?,php,python,Php,Python,我使用PHP成功地调用了python脚本并得到了结果。但是我必须等待脚本运行结束,没有任何输出。对我的客户来说,这看起来不友好 如何将脚本结果实时返回到PHP web 例如,对于下面的代码,我希望PHP web将实时显示输出消息,而不是在最后一起显示它们。如何更改代码? 多谢各位 PHP代码: <?php $k = $_REQUEST['k']; if (!empty($k)) { $k = trim($k); $a = array(); exec('python ./some.py '

我使用PHP成功地调用了python脚本并得到了结果。但是我必须等待脚本运行结束,没有任何输出。对我的客户来说,这看起来不友好

如何将脚本结果实时返回到PHP web

例如,对于下面的代码,我希望PHP web将实时显示输出消息,而不是在最后一起显示它们。如何更改代码? 多谢各位

PHP代码:

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

根据规范,
exec
停止调用程序,直到被调用方结束。之后,您将返回变量中的输出

如果希望在数据生成后立即发送数据,则应使用。它将派生一个新进程,但不会阻止调用方。因此,您可以执行其他任务,如循环以逐行读取子进程输出,并将其发送给客户端。诸如此类:

$handle=popen(“python./some.py”,“r”);
而(!feof($handle)){
$buffer=fgets($handle);
回显“$buffer
\n”; ob_flush(); } pclose($handle)
很抱歉,我太忙了,无法立即回复您的答案。是的,您的答案是正确的,我用您的代码解决了我的问题。再次感谢您。
#!/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)
$handle = popen("python ./some.py ", 'r');
while(!feof($handle)) {
    $buffer = fgets($handle);
    echo "$buffer<br/>\n";
    ob_flush();
}
pclose($handle)