Подтвердить что ты не робот

Как выполнять команды оболочки синхронно в PHP

Мне нужно запустить несколько сценариев (5 скриптов) через cmd, я хочу убедиться, что до тех пор, пока первый script не завершит второй, не должен запускаться. Таким образом, после первого завершения script, тогда только второй должен быть третьим и т.д. В настоящее время я использую следующий код для этого

exec ("php phpscript1.php ");
exec ("php phpscript2.php ");
exec ("php phpscript3.php ");
exec ("php phpscript4.php ");
exec ("php phpscript5.php ");

Я думаю, что эти скрипты выполняются асинхронно, любые предложения, чтобы эти сценарии можно запускать синхронно.

4b9b3361

Ответ 1

PHP exec будет ждать завершения выполнения вызываемой программы до обработки следующей строки, если вы не используете и не используете конец строки для запуска программы в фоновом режиме.

Ответ 2

Если я прав, вы выполняете php-скрипты из php script.

Обычно php ожидает завершения выполнения exec ("php phpscript1.php"); до обработки следующей строки.

Чтобы этого избежать, просто перенаправьте вывод на /dev/null или файл и запустите его в фоновом режиме.

Например: exec ("php phpscript1.php >/dev/null 2>&1 &");.

Ответ 3

Ознакомьтесь с exec синтаксисом функции на php.net. Вы увидите, что exec не выполняет асинхронно по умолчанию.

exec имеет два других параметра. Третий, return_var может дать вам подсказку, если успешно запущен script или любое исключение. Вы можете использовать эту переменную, чтобы проверить, можете ли вы запускать последующие скрипты.

Протестируйте его и сообщите нам, если он сработает для вас.