Я пытаюсь выполнить скрипт perl внутри php-скрипта. Хотя он работает, но только на короткий срок. Как увеличить срок, чтобы выполнение скрипта perl было закончено до тех пор, пока не будет вызван окончательный сценарий php?
Я запускаю php-скрипт на localhost.
Вот код:
<?php
$maxChildren = 1;
$pids = array();
$pid = pcntl_fork();
if ($pid) { // Parent
if ($pid < 0) {
// Unable to fork process, handle error here
continue;
} else {
$pids[$pid] = $pid;
}
} else {
exec("perl -f script.pl ");
exit(0);
}
while(pcntl_waitpid(0, $status) != -1);
?>
Похоже, вы слишком усложнили проблему. Если я что-то не хватает, весь ваш код можно заменить одной строкой
<?php
exec("perl -f script.pl ");
?>
так как это будет иметь тот же эффект, что и forking, а затем сразу же ждет завершения дочернего процесса.
Чтобы избежать тайм-аута страницы до завершения скрипта perl, просто добавьте set_time_limit(0)
перед вызовом exec:
<?php
set_time_limit(0);
exec("perl -f script.pl ");
?>
-f
).