У меня есть PHP-скрипт, который запрашивает базу данных для списка выполняемых заданий и запускает другие скрипты PHP на основе того, что он находит в базе данных (в основном очередь процессов).
Некоторые сценарии, выполняемые скриптом runte runter, могут занять около 30 секунд, чтобы завершить работу (создание PDF-файлов, изменение размеров изображений и т. Д.).
Проблема в том, что shell_exec()
в сценарии shell_exec()
вызывает вызовы сценариев обработки, но затем не 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-файла.
Есть какие нибудь идеи как это починить? Или лучший способ запустить очередь процессов?
Попробуй это:
shell_exec("nohup /usr/bin/htmldoc -t pdf --webpage test.html > test.pdf 2>&1 &");