Writerim
@Writerim
Заполнить позже...

Как закрыть процесс зная по указателю?

У меня вопрос с указателями. Я в этом полный профан и поэтому если будет вопрос содержать логические ошибки, то поправить.

Я открываю процесс и получаю на него указатель

if( is_resource($f = popen("php file.php", 'r')) )
			{
				while(!feof($f))
				{ 

					$read   = Array($f);
					$write  = null;
					$except = Array($f);
					$int = stream_select( $read, $write, $except, 10 /* сек */  ); 

					if( $int && in_array( $f, $read ) ){}
					else
					{
						/*
						10 сек выполнения
						*/
						break;
					}
					$output .= fread($f,1024);
					if(substr_count( $output,'syntax error') > 0)
					{
						break;
					}
					elseif(substr_count( $output,'Allowed memory') > 0)
					{
						break;
					}
					elseif(substr_count( $output,'execution time') > 0)
					{
						break;
					}
					else
					{	
						echo "good!";
					}
				}
				pclose($f);
			}


Проблема в том , что у меня на скрипт дается 10 секунд. В самом исполняемом скрипте file.php стоит sleep(15)
И результат выполнения будет

10 секунд
15 секунд

Пока не завершится выполнение file.php я не могу повлиять на него. Допустим мне надо после 30 секунд его ожидания закрыть, а он выполняется и выполняется.
  • Вопрос задан
  • 149 просмотров
Решения вопроса 1
He11ion
@He11ion
PHP-monkey
stackoverflow.com/a/4731666
Вот, например, но, судя по Вашим попыткам отловить ошибки через парсинг стандартных сообщений о них на выводе - у Вас что-то не так с архитектурой скрипта.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы