Я использую команду exec() в PHP для запуска скрипта 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
Весь код работает правильно, как проверить, запустив сценарий питона из командной строки и сдачи теста «print 10» в скрипте python, чтобы убедиться, что скрипт php работает.
Я уверен, потому что для выполнения скрипта требуется несколько секунд, чтобы PHP не ожидал вывода правильно. Я попробовал функцию set_time_limit(), но на самом деле не рассчитывает время от exec().
Любые предложения?
проверено $ output = passthru ('/ usr/local/bin/python2.7 test.py'); ? – hanshenrik
Да, passthru тоже не работает. – dmarzio
lemme guess, вы проверяете скрипт python с пользователем X, а PHP запускает скрипт python с пользователем Y (может быть, пользовательский www-data?) .. лучше всего предположить, что скрипт python имеет проблему (доступ?), Работающую под PHP user .. idk, хотя это просто догадка – hanshenrik