У меня есть именованный файл pipe, который выглядит так:
prw-r--r-- 1 root root 0 Aug 11 17:01 /tmp/debug
Когда я делаю что-то подобное в PHP:
$fp = fopen("/tmp/debug", "r");
Он зависает (т.е. никогда не возвращается). Есть ли способ вернуть этот вызов и / или таймаут?
(редактировать)
Обратите внимание: я хочу, чтобы один процесс открыл этот канал с разрешениями на запись, а другой процесс открыл канал с разрешениями на чтение. Кто-то пишет эту трубку, а кто-то читает из этого канала. Проблема в том, что читатель иногда висит на fopen () – который я всегда хочу вернуть, был ли он успешным или нет.
http://php.net/manual/en/function.stream-set-timeout.php
Обратите внимание:
Примечание. Для переносимости настоятельно рекомендуется всегда использовать флаг «b» при открытии файлов с помощью функции fopen ().
Может быть, это поможет.
Кроме того, прочитайте это сообщение Как использовать именованные каналы в PHP между различными функциями или даже разными процессами без fork?