PHP shell exec дождаться завершения скрипта? [дубликат]

этот вопрос уже есть ответ здесь:

у меня есть php-скрипт, который запрашивает базу данных для списка заданий и запускает другие PHP-скрипты на основе того, что он находит в базе данных (в основном очередь процессов).

некоторые выполнение сценариев, выполняемых сценарием запуска очередей, может занять около 30 секунд (создание PDF-файлов, изменение размера изображений и т. д.).

проблема в том, что shell_exec() в сценарии запуска очереди вызывает сценарии обработки, но затем не ждет их завершения, в результате чего очередь не будет завершена.

сценарий запуска очереди:

#!/usr/bin/php
<?php
    // Loop through database and find jobs to be done
    shell_exec(sprintf("/root/scripts/%s.php", $row['jobName']));
?>

работа скрипта:

#!/usr/bin/php
<?php
    shell_exec("/usr/bin/htmldoc -t pdf --webpage test.html > test.pdf");
    // Update database to mark job as completed
?>

запуск сценария задания непосредственно из командной строки и PDF создается.

есть идеи о том, как это исправить? Или лучший способ запустить очередь процессов?

1 ответов


попробуйте это:

shell_exec("nohup /usr/bin/htmldoc -t pdf --webpage test.html > test.pdf 2>&1 &");