camka
не самка
Определить, не разорвано ли соединение _считыванием_ из сокета HTTP соединения.
Задача - держать достаточно продолжительное соединение с клиентом, и, вовремя отреагировать на разрыв этого соединения на стороне сервера.
На данный момент решение работает на проверке состояния соединения ( connection_status() ). Поскульку отреагировать на разрыв соединения следует как можно раньше, то приходится писать в поток вывода по одному байту каждый раз, когда надо проверить соединение, так как статус в этом случае определяется именно по результату функции _записи_ в сокет. Таким образом, создается нежелательный поток ненужной информации от сервера к браузеру, и, чем больше должна быть скорость реакции на обрыв соединения, тем больше информации приходится передавать.
Теоретически возможно определять статус ХТТП соединения, читая из сокета, а не записывая информацию в него. Но, почему-то, предполагаемый поток php://stdin при чтении из него никогда не выдает false, что значит, что он или не является адекватным сокетом хттп соединения, как я предполагал, либо не дает правильный ответ, при разрыве соединения.
Если кто знает, подскажите, возможно ли средствами пхп определить разрыв соединения путем _чтения_ из сокета или, если уж нельзя, то почему.
Задача - держать достаточно продолжительное соединение с клиентом, и, вовремя отреагировать на разрыв этого соединения на стороне сервера.
На данный момент решение работает на проверке состояния соединения ( connection_status() ). Поскульку отреагировать на разрыв соединения следует как можно раньше, то приходится писать в поток вывода по одному байту каждый раз, когда надо проверить соединение, так как статус в этом случае определяется именно по результату функции _записи_ в сокет. Таким образом, создается нежелательный поток ненужной информации от сервера к браузеру, и, чем больше должна быть скорость реакции на обрыв соединения, тем больше информации приходится передавать.
Теоретически возможно определять статус ХТТП соединения, читая из сокета, а не записывая информацию в него. Но, почему-то, предполагаемый поток php://stdin при чтении из него никогда не выдает false, что значит, что он или не является адекватным сокетом хттп соединения, как я предполагал, либо не дает правильный ответ, при разрыве соединения.
Если кто знает, подскажите, возможно ли средствами пхп определить разрыв соединения путем _чтения_ из сокета или, если уж нельзя, то почему.
