ожидание ответа функции

  • Автор темы maykoff
  • Дата начала
Статус
Закрыто для дальнейших ответов.
M

maykoff

#1
Код:
$f = fopen("/dev/xxxx","a+");
fputs($f,"AT\r\n");
for(;;)
{
$str = fgets($f,8);
echo "$str";
if(preg_match("/OK\r\n/",$str)) break;
}
fclose($f);
/dev/xxxx - это компорт, на котором висит GSM-шлюз.
Проблема в том, что конца файла у $f, похоже , просто нет.
Прочитав всё что можно, на строке $str = fgets($f,8); зависает, ожидая дальнейшего вывода, которого нет.

Как вариант - задать (сэмулировать) таймаут для функции, в которую поместить чтение из указателя.
Но как это сделать - пока не придумал.

Если у кого какие соображения на этот счёт будут - заранее благодарен .
 
M

maykoff

#3
auto_detect_line_endings - это директива, которая включает определение окончания первой строки.
Мне же надо обработать окончание потока данных, читаемых из указателя.
feof() не срабатывает, скорее всего из-за отсутствия конца файла.
fgets просто ждёт следующего байта из указателя, скрипт висит.
 
M

maykoff

#4
Неужто больше идей нет?
Как вариант - получить информацию о сокете - количество невычитанных данных или наличие байта.
Но как это сделать - ума не приложу.
 
Статус
Закрыто для дальнейших ответов.