我使用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)
根据说明,exec
停止调用程序,直到被调用方结束。之后,您将输出返回到变量中。
如果要在数据生成后立即发送,则应使用popen
。它将派生一个新进程,但不会阻止调用者。因此,您可以执行其他任务,例如循环循环逐行读取子流程输出以将其发送到您的客户端。什么样的是:
$handle = popen("python ./some.py ", 'r');
while(!feof($handle)) {
$buffer = fgets($handle);
echo "$buffer<br/>\n";
ob_flush();
}
pclose($handle)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句