Я просто хотел бы добавить очень простой пример для тестирования этой функциональности в Windows:
Создайте следующие два файла и сохраните их в веб-каталоге:
foreground.php:
<code><?php
ini_set("display_errors",1);
error_reporting(E_ALL);
echo "<pre>loading page
";
функция run_background_process ()
{
file_put_contents ("testprocesses.php", "время начала переднего плана =". time (). "\ n");
echo "
foreground start time = " . time() . "
";
// вывод команды должен быть перенаправлен в файл или другой поток вывода
//
http://ca.php.net/manual/en/function.exec.php
exec ("php background.php> testoutput.php 2> & 1 & echo $!", $ output);
echo "
foreground end time = " . time() . "
";
file_put_contents ("testprocesses.php", "время окончания переднего плана =". time (). "\ n", FILE_APPEND);
вернуть $ output;
}
echo "
calling run_background_process
";
$ output = run_background_process ();
echo "
output = "; print_r($output); echo "
";
echo "
end of page
";
?>
background.php:
<?
file_put_contents("testprocesses.php","background start time = " . time() . "\n", FILE_APPEND);
sleep(10);
file_put_contents("testprocesses.php","background end time = " . time() . "\n", FILE_APPEND);
?>
Дайте IUSR разрешение на запись в каталог, в котором вы создали вышеуказанные файлы
Предоставьте разрешение IUSR для чтения и выполнения C: \ Windows \ System32 \ cmd.exe
Хит foreground.php из веб-браузера
Следующее должно быть отображено в браузере с текущими временными метками и локальным ресурсом # в выходном массиве:
loading page
calling run_background_process
foreground start time = 1266003600
foreground end time = 1266003600
output = Array
(
[0] => 15010
)
end of page
Вы должны увидеть testoutput.php в том же каталоге, в котором были сохранены вышеуказанные файлы, и он должен быть пустым
Вы должны увидеть testprocesses.php в том же каталоге, в котором были сохранены вышеуказанные файлы, и он должен содержать следующий текст с текущими временными метками:
foreground start time = 1266003600
foreground end time = 1266003600
background start time = 1266003600
background end time = 1266003610