我在PHP中使用exec()命令来运行一个会产生一些输出的python脚本。这个python脚本查询一个相当大的PostgreSQL数据库,所以它需要一两秒才能执行。这里是我的代码:让PHP等待python脚本完成
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脚本中“打印10”以确保php脚本正常工作。
我很确定,因为PHP需要几秒钟的时间才能执行PHP没有正确等待输出的脚本。我尝试了set_time_limit()函数,但它实际上并没有从exec()计算时间。
有什么建议吗?
尝试$ output = passthru('/ usr/local/bin/python2.7 test.py'); ? – hanshenrik
是的,passthru也不起作用。 – dmarzio
lemme guess,你用用户X测试python脚本,PHP用用户Y运行python脚本(用户www-data可能?) ..最好猜测,python脚本有一个(access?)问题PHP用户.. idk虽然,它只是一个猜测 – hanshenrik