PHP. Запуск процессов в фоне в ОС Windows
23/11/2006Если вы используете функции exec() или shell_exec() для запуска процессов, php будет ждать, пока процесс не завершится и только после этого продолжит выполнение скрипта.
В комментариях к функции exec() в документации описано несколько методов для запуска процессов в фоне для ОС Windows.
I.Запуск фонового процесса, используя объект WScript.Shell:Вы можете запустить процесс в фоне, используя метод Run() объекта WScript.Shell, который встроен в Windows. Приведенный ниже код работает только в Windows:
$WshShell = new COM("WScript.Shell"); $oExec = $WshShell->Run("cmd /C dir /S %windir%", 0, false);
Приведенный код работает как в Windows, так и в Linux.
$cmd = 'start "bla" "' . $exe . '" ' . escapeshellarg($args); $p = popen($cmd, "r"); pclose($p);
Этот метод требует установки pstools.
exec("psexec -d blah.bat");
Хоть процесс и не запустится в фоне (php будет ожидать завершения выполнения команды), этот способ тоже стоит упомянуть. Используйте параметр /B команды "start", чтобы спрятать окно.
exec('start /B "window_name" "path to your exe"',$output,$return);