Дождитесь завершения выполнения скрипта Perl внутри скрипта php

1

Я пытаюсь выполнить скрипт 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);

?>
  • 0
    Вам не нужен цикл while для pcntl_waitpid. Что именно ваш вопрос?
  • 0
    Как увеличить лимит времени, пока выполнение скрипта perl не будет завершено внутри скрипта php при использовании его в localhost.
Показать ещё 6 комментариев
Теги:

1 ответ

1

Похоже, вы слишком усложнили проблему. Если я что-то не хватает, весь ваш код можно заменить одной строкой

<?php
exec("perl -f script.pl  ");
?>

так как это будет иметь тот же эффект, что и forking, а затем сразу же ждет завершения дочернего процесса.

Чтобы избежать тайм-аута страницы до завершения скрипта perl, просто добавьте set_time_limit(0) перед вызовом exec:

<?php
set_time_limit(0);
exec("perl -f script.pl  ");
?>
  • 1
    Вы также можете удалить завершающие пробелы (и я скептически отношусь к необходимости -f ).
  • 0
    Хорошо, мои извинения за копирование строки из оригинального поста!
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню