2015-04-12 56 views
1

我使用PHP来成功调用python脚本并获得结果。但是我必须等待脚本运行结束而没有任何输出。它对我的顾客看起来不友善。如何实时使用PHP调用python脚本返回结果?

如何将脚本结果实时返回到PHP网页?例如,对于下面的代码,我希望PHP web将实时显示输出消息,而不是在最后显示它们。我如何更改我的代码? 谢谢。

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) 

回答

2

通过规范,exec停止调用程序,直到被叫方结束。 之后,你会得到一个变量的输出。

如果您想在数据生成后立即发送数据,则应使用popen。它会分叉一个新的进程,但不会阻止调用者。所以你可以执行其他任务,比如循环读取子进程输出一行一行地发送给你的客户端。东西是:

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

对不起,我太忙了,你的答案instantly.Yes回复,你的答案是正确的,我用你的代码再解决我problem.Thank你。 –