Используйте php для запуска другого php-скрипта, затем игнорируйте

Я пытаюсь понять, как это сделать: у меня есть php-файл, назовем его trigger.php, который запускает некоторый php-код, запускающий другой php-файл, который мы назовем backgroundProcess.php, чтобы начать обработку.

Хотя trigger.php нужно игнорировать то, что происходит с backgroundProcess.php, ему просто нужно начать обработку, и она остановится, пока backgroundProcess.php продолжит работу.

изменить1

Я запускаю это на Windows Wampserver 2.1, так что это должна быть команда Windows.

изменить2

Решил это с помощью следующей команды, благодаря предложениям jakenoble:

exec("C:\wamp\bin\php\phpVERSION_NUMBER\php.exe -f C:\wamp\www\path\to\backgroundProcess.php");

person Emmanuel    schedule 19.03.2011    source источник


Ответы (1)


Вы можете использовать exec() и добавить & в конец вызова, а также выходной поток:

В триггер.php

exec("php backgroundProcess.php > /dev/null &");

Вы можете узнать больше здесь http://php.net/manual/en/function.exec.php

person Jake N    schedule 19.03.2011
comment
Это не работает. Я использую WAMPSERVER 2.1, так что, возможно, проблема в этом? Есть ли способ обойти это? - person Emmanuel; 19.03.2011
comment
Если я не делаю что-то еще неправильно... У меня есть оба файла php в одной папке, и я запускаю указанную выше команду. - person Emmanuel; 19.03.2011
comment
Это не сработает, Windows, вероятно, не знает, где установлен php, и поэтому не может его выполнить. Попробуйте запустить командное окно и выполнить там скрипт, затем взять этот код и использовать его в exec(). Я не использую Windows, поэтому больше ничем помочь не могу. Возможно, вы захотите пересмотреть свой вопрос, поскольку это все меняет. - person Jake N; 19.03.2011
comment
Решено! :) С помощью следующей команды: exec("C:\wamp\bin\php\phpVERSION_NUMBER\php.exe -f C:\wamp\www\path\to\backgroundProcess.php"); - person Emmanuel; 19.03.2011
comment
Как в Unix, так и в Windows, предполагается, что расположение php находится в переменной PATH (%PATH% для Windows и $PATH для unix). В unix обычно так, а в Windows - нет. Альтернативой добавлению каталога php в переменную среды пути является вставка полного пути. Это возможно в Windows и Unix, но вообще не будет переносимым. - person Jasper; 26.07.2013
comment
Это не будет работать на учетных записях общего хостинга, таких как GoDaddy. - person Trass Vasston; 10.01.2017