• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

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

    Запись на курс до 25 апреля. Получить промодоступ ...

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

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

maykoff

Код:
$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

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

maykoff

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

Обучение наступательной кибербезопасности в игровой форме. Начать игру!