PHP: мониторинг TCP-соединения - PullRequest
0 голосов
/ 16 ноября 2009

У меня есть приложение, которое используется для подключения к услуге один раз в неделю в течение 1-часового сеанса. У этого сеанса много требований, одно из которых заключается в том, что у нас есть только одно открытое TCP-соединение за раз.

Из 30 сессий, которые мы завершили, у нас было 3 сессии, в течение которых было открыто несколько TCP-соединений в течение 1 часа.

Мне интересно, есть ли в php метод, который будет возвращать состояние соединений, я рассмотрел использование netstat и поиск IP-адреса сервера, к которому мы подключаемся, а затем по этому статусу определил, нормально ли продолжать или мы должны Подождите. Проблема в том, что у нас есть планы на покупку большего количества соединений в будущем, и это приведет к тому, что одновременно будет проходить только 1 соединение.

Мы используем Zend_Http_Client из Zend Framework и попробовали следующее:

сбросить объект клиента и адаптера явный вызов функции закрытия адаптеров после функции запроса клиентов в прошлый раз я сделал и сбросил и закрыл адаптер

Всего наилучшего,

Jason

Ответы [ 3 ]

0 голосов
/ 16 ноября 2009

вы не должны пытаться решить это в клиенте. ограничить количество одновременных подключений на сервере.

0 голосов
/ 01 сентября 2011

Пересмотрев эту проблему, я решил использовать опцию bindto в опциях потока сокетов, чтобы каждый раз связываться с одним и тем же портом. Это должно гарантировать, что предыдущее соединение было закрыто, а порт освобожден.

Тестирование не было завершено, но первоначальные результаты не показывают дубликаты соединений.

http://ca.php.net/manual/en/context.socket.php

0 голосов
/ 16 ноября 2009

Возможно, проще всего выполнить команду netstat и посмотреть, установлены ли какие-либо подключения к удаленному хосту.

...