Im пытается выполнить perl-скрипт из PHP-скрипта. У меня была эта работа с использованием различных методов, таких как exec, popen и proc_open, но у меня есть пара проблем, вокруг которых старый добрый Google не дает мне ответов.Запустить perl-файл из PHP-скрипта, но не дождаться выхода на Windows Server
Мне нужно запустить скрипт .pl (передавая одну переменную скрипту, который является числом) из файла php, но остановите PHP-скрипт от ожидания до завершения .pl. 4-5 часов для запуска на сервере). Я не ожидаю возврата из сценария perl (perl-скрипт записывает свой вывод в mysql db), поэтому мне просто нужно, чтобы он работал на сервере и продолжал скрипт php.
Есть некоторые препятствия, которые можно преодолеть при запуске на машинах Windows, работающих под управлением apache, php, mysql.
Я думаю, что я видел решение для Linux, но он должен оставаться на машине Windows.
Im ток пробуя proc_open подход, используя следующий код (35 на proc_open линии тест идентификатор Мне нужно передать в скрипт Perl):
$descriptorspec = array(
0 => array("pipe","r"),
1 => array("pipe","w"),
2 => array("file","./error.log","a")
) ;
proc_close(proc_open('perl perlscript.pl 35', $descriptorspec, $pipes));
$i = 0;
while ($i < 1000) {
echo ++$i;
}
Теперь этот код действительно выполнить скрипт на языке Perl но цикл while Ive, размещенный после него (только для тестирования), никогда не выполняется (ive не дождался завершения скрипта perl, чтобы убедиться, что он это делает), поскольку он должен ждать завершения .pl.
Это, кажется, дает ответ для Linux, но каждый может пролить свет на него для Windows-машины. Http: // StackOverflow.com/questions/3420949/php-using-proc-open-so-that-it-doesnt-wait-for-the-script-it-opens-running-to-fin – azzy81 2010-11-26 11:27:18