Официальный сайт студ.городка НГТУ
Программирование и БД » [php] Блокировка при чтении данных из канала 

#1  08.06.09 23:44

[php] Блокировка при чтении данных из канала

День добрый!

Передо мной стоит с одной стороны довольно тривиальная задача: прочитать данные из канала (файла). Особенность задачи в том, что чтение должно быть блокирующим: то есть, если в файле ничего нет, а я хочу считать строку, процесс должен зависнуть до тех пор, пока в файл не будут записаны данные. Аналогичная логика, на сколько мне известно, реализована для работы с сокетами (например, у функции socket_recvfrom).

Конечно, у моей задачи есть довольно простое решение - считывать данные в цикле с помощью fgets, пока функция не вернёт что-нибудь. Но может быть кому-нибудь известно более "красивое" решение?

Offline

#2  09.06.09 00:38

Re: [php] Блокировка при чтении данных из канала

Укроп написал(а):

efferson написал(а):

данные из канала

потока?

Это не я бляяя...

Offline

#3  09.06.09 15:40

Re: [php] Блокировка при чтении данных из канала

efferson, через select, например...

Offline

#4  09.06.09 22:09

Re: [php] Блокировка при чтении данных из канала

Jaguar, не совсем тебя понял. Что ты имеешь ввиду?
Укроп, в оригинале из канала, полученного от вызова proc_open

Offline

#5  09.06.09 23:26

Re: [php] Блокировка при чтении данных из канала

socket_select или stream_select... один словом организация конвеера обработки с слежением за состоянием ввода/вывода

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

Программирование и БД » [php] Блокировка при чтении данных из канала 

ФутЕр:)

© Hostel Web Group, 2002-2025.   Сообщить об ошибке

Сгенерировано за 0.159 сек.
Выполнено 14 запросов.