Как запустить несколько PHP-скриптов из PHP-скрипта (например, пакетного файла)?

Как я могу запустить несколько PHP-скриптов из другого PHP-скрипта, например пакетного файла? Я не думаю, что включение будет работать, если я понимаю, что включает в себя; потому что каждый из файлов, которые я запускаю, обновит некоторые из тех же функций и т. д. Я хочу, чтобы каждый новый скрипт PHP, как будто он был в чистом, свежем стеке, без знания переменных, функций и т. д., что перед ним.

Обновление : я должен был упомянуть, что сценарий работает в Windows, но не на веб-сервере.

Вы можете использовать функцию exec () для вызова каждого скрипта в качестве внешней команды.

Например, ваш скрипт мог бы сделать:

<?php exec('php -q script1.php'); exec('php -q script2.php'); ?> 

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

// использовать exec http://www.php.net/manual/en/function.exec.php

 <?php exec('/usr/local/bin/php somefile1.php'); exec('/usr/local/bin/php somefile2.php'); ?> 

В прежние времена я делал что-то вроде создания набора фреймов, содержащего ссылку на каждый файл. Вызовите набор фреймов, и вы вызываете все сценарии. Вы можете сделать то же самое с iframe или с ajax в наши дни.

exec () – это прекрасная функция для использования, но вам придется подождать до завершения процесса, чтобы продолжить работу с родительским скриптом. Если вы выполняете пакет процессов, где каждый процесс занимает немного времени, я бы предложил использовать popen ().

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

Это особенно полезно, если вы вызываете API-вызовы или запускаете сценарии, которые не могут быть интенсивными в памяти или интенсивными с точки зрения вычислительной мощности, но требуют значительного ожидания завершения каждого из них.

Если вам нужны какие-либо результаты возврата из этих сценариев, вы можете использовать system функцию.

 $result = system('php myscript.php'); $otherresult = system('php myotherscript.php');