#1 08.06.09 23:44
[php] Блокировка при чтении данных из канала
День добрый!
Передо мной стоит с одной стороны довольно тривиальная задача: прочитать данные из канала (файла). Особенность задачи в том, что чтение должно быть блокирующим: то есть, если в файле ничего нет, а я хочу считать строку, процесс должен зависнуть до тех пор, пока в файл не будут записаны данные. Аналогичная логика, на сколько мне известно, реализована для работы с сокетами (например, у функции socket_recvfrom).
Конечно, у моей задачи есть довольно простое решение - считывать данные в цикле с помощью fgets, пока функция не вернёт что-нибудь. Но может быть кому-нибудь известно более "красивое" решение?
Offline
#6 13.06.09 12:04
Re: [php] Блокировка при чтении данных из канала
Всем пасиба - истина оказалась рядом. Блокировка чтения из потока производится с помощью функции stream_set_blocking. Тут правда у меня возникла загвоздка - не смотря на обещания в официальной документации (http://ru2.php.net/manual/en/function.s … ocking.php) функция fgets всё равно не блокировала чтение - пришлось использовать stream_get_contents.
Offline

