PHP. Запуск процессов в фоне в ОС Windows

23/11/2006

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

В комментариях к функции exec() в документации описано несколько методов для запуска процессов в фоне для ОС Windows.

I.Запуск фонового процесса, используя объект WScript.Shell:

Вы можете запустить процесс в фоне, используя метод Run() объекта WScript.Shell, который встроен в Windows. Приведенный ниже код работает только в Windows:

<?php
  $WshShell = new COM("WScript.Shell");
  $oExec = $WshShell->Run("cmd /C dir /S %windir%", 0, false);
?>
II.Запуск фонового процесса, используя popen и pclose:

Приведенный код работает как в Windows, так и в Linux.

<?php
  $cmd = 'start "bla" "' . $exe . '" ' . escapeshellarg($args);
  $p = popen($cmd, "r");
  pclose($p);
?>
III.Запуск фонового процесса, используя psexec:

Этот метод требует установки pstools.

<?php
  exec("psexec -d blah.bat");
?>
IV.Запуск процесса без окна cmd:

Хоть процесс и не запустится в фоне (php будет ожидать завершения выполнения команды), этот способ тоже стоит упомянуть. Используйте параметр /B команды "start", чтобы спрятать окно.

<?php
  exec('start /B "window_name" "path to your exe"',$output,$return);
?>

Оставить комментарий

BlogMemes.ru