
27.04.2007, 14:45
|
|
Участник форума
Регистрация: 31.01.2005
Сообщений: 151
Провел на форуме: 422765
Репутация:
11
|
|
начал делать с помощью proc_open:
Код:
<?php
set_time_limit(0);
for($t=0;$t<100000;$t++) //цикл
{
$descriptorspec = array(
0 => array("pipe", "r"), // stdin это канал, из которого потомок будет читать
1 => array("pipe", "w"), // stdout это канал, в который потомок будет записывать
2 => array("file", "/tmp/error-output.txt", "a"), // stderr это файл для записи
);
$process = proc_open("php", $descriptorspec, $pipes);
if (is_resource($process)) {
// $pipes выглядит теперь примерно так:
// 0 => записываемый дескриптор, соединённый с дочерним stdin
// 1 => читаемый дескриптор, соединённый с дочерним stdout
// Любой вывод ошибки будет присоединён к /tmp/error-output.txt
fwrite($pipes[0], func_needed_timeout($zz));
fclose($pipes[0]);
while(!feof($pipes[1])) {
echo fgets($pipes[1], 1024);
}
fclose($pipes[1]);
// Важно, чтобы вы закрыли любые каналы до вызова
// proc_close, чтобы исключить тупиковую блокировку
$return_value = proc_close($process);
echo "command returned $return_value\n";
}
}
function function_needed_timeout($zz)
{
set_time_limit(10);
//здесь дописать код ункции нуждающаяся в прерывании по таймауту
}
?>
Думал set_time_limit если установить на родительский и дочерний процессы как в примере, всё будет работать, а нет, всё равно прерывается работа всего скрипта.
Need help, как принудительно прерывать функцию под названием function_needed_timeout($zz) через заданный промежток времени?
|
|
|