Страницы

Поиск по вопросам

пятница, 12 октября 2018 г.

websocket выключается из-за простоя PHP

Возникли проблемы с веб-сокетом. Работает отлично, все супер, но если сокетом никто не пользуется больше 1 минуты, он выключается. Спустя минуту простоя я получаю "CloseEvent" c кодом "1000" на любой запрос. Когда подключен хотя бы один пользователь проблема решается пинг-понгом, но когда нет ни одного пользователя сокет висит без дела. Вроде уже указал все конфигурации связанные с timeout-ом, но не помогло.
Сокет реализован с помощью библиотеки: https://github.com/pmill/php-chat
Проверял на Open Server. Используется Apache в связке с Nginx.


Ответ

Кто бы мог подумать что проблема будет в конфигах MySQL.
Спустя минуту бездействия база автоматически прерывает соединение с ней, а у меня при любом запросе происходила проверка прав пользователя.
Для решения проблемы в mysql.ini нужно установить свойство wait_timeout в секундах сколько вам необходимо, у меня стояло по умолчанию 60
Так же прошу заметить что есть вариант "Б", если его таковым можно назвать.
Для обхода проблемы можно воспользоваться "Supervisor", он в таких случаях решает следствие, а не причину.
Он автоматически запускает или перезапускает сервер когда тот упал или недоступен. Для примера можно воспользоваться этим туториалом для установки и настройки Supervisor.

Комментариев нет:

Отправить комментарий