2008-10-28 2 views
4

У меня есть приложение Php, использующее stream_socket_client(), чтобы получить данные через tcp с внутреннего сервера, но хотелось бы сохранить соединения живыми или даже лучше в пуле или чем-то, чтобы избежать соединения/разъединения над головой.Как сохранить ресурс Php stream_socket?

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

ответ

4

Установка флага при создании потока предотвращает соединение от холостого хода. Внутренний флаг составляет stream_socket_client(). pfsockopen() (doc) вместо fsockopen() (doc).

Постоянство связи ограничено процессом сервера, на котором было открыто соединение. Когда ваш скрипт заканчивается, и вы вызываете его снова, не может быть никакой гарантии, что тот же процесс обработает ваш запрос - в этом случае будет открыто другое соединение. Ввод соединения в $_SESSION для его использования не будет работать.

+0

Заставляет меня грустить ... но спасибо за информацию –

+0

Не могли бы вы объединить пул серверов в качестве дешевого пути в пул соединений «своего рода»? В терминах «Пусть есть одно соединение для каждого процесса, и какой процесс запускает ваш скрипт, чтобы он стал неактуальным».? – Tomalak

+0

Возможно ... не уверен, как это сделать прямо сейчас, но может заглянуть в него. –