让PHP等待python脚本完成

时间:2014-01-22 04:16:29

标签: php python

我在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()计算时间。

有什么建议吗?

2 个答案:

答案 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,它会使用程序的数字返回值覆盖实际输出。不要那样做。