我在PHP中使用exec()命令来运行将产生一些输出的python脚本。这个python脚本查询一个相当大的PostgreSQL数据库,所以它需要一两秒才能执行。这是我的代码:
test.php
<?php
$output = exec('/usr/local/bin/python2.7 test.py', $output);
var_dump($output);
?>
test.py
import nfldb
db = nfldb.connect()
q = nfldb.Query(db)
q.game(season_year=2012, season_type='Regular')
for pp in q.sort('passing_yds').limit(10).as_aggregate():
print pp.player, pp.passing_yds
通过从命令行运行python脚本并在python脚本中放置测试“print 10”以确保php脚本正常工作,所有代码都能正常运行。
我很确定,因为执行PHP没有正确等待输出的脚本需要几秒钟。我尝试了set_time_limit()函数,但实际上并没有从exec()计算时间。
有什么建议吗?
答案 0 :(得分:0)
在r
模式下使用popen
。
<?php
$handle = popen('/usr/local/bin/python2.7 test.py', 'r');
$output = fread($handle, 1024);
var_dump($output);
pclose($handle);
?>
答案 1 :(得分:0)
您将exec()
的返回值赋给$ output,它会使用程序的数字返回值覆盖实际输出。不要那样做。