Длительный опрос вызывает проблемы с сервером? - PullRequest
1 голос
/ 25 сентября 2011

Я наконец-то создал простую страницу чата, которую давно хотел создать, но у меня проблемы с моими серверами.

Я не уверен, является ли длинный опрос правильным термином, но, насколько я понимаю, я думаю, что это так.У меня есть вызов ajax на страницу php, которая проверяет базу данных mysql на наличие сообщений со временем, более новым, чем время, отправленное в запросе ajax.Если нет более нового сообщения, оно продолжает цикл и проверяет, пока не будет.Иначе, он просто возвращает новые сообщения, а клиентский скрипт отправляет еще один ajax-запрос, как только получает сообщения.

Все работает нормально, за исключением части, где сервер на 000webhost перестает отвечать после нескольких сообщений чата, а сервер на хостинге x10 дает мне сообщение о превышении лимита ресурсов.

Возможно, это глупый способ создать систему чата, но это все, что я знаю, как это сделать.Если есть лучший способ, пожалуйста, дайте мне знать.

edit: Черт возьми, мне пришло в голову, что я не помещал время сна в цикл while на сервере.

Ответы [ 3 ]

1 голос
/ 25 сентября 2011

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

Я бы рекомендовал использовать WebSockets и использовать, например, Node.JS с Socket.IO или Tornado с Python; Существует множество решений, но большинство из них потребует от вас запуска собственного сервера, поскольку для этого требуется запускать целую программу, которая взаимодействует со многими соединениями одновременно, а не простые сценарии, которые просто запускаются и заканчиваются одним соединением.

0 голосов
/ 10 мая 2016

Убедитесь, что вы спите (1) свой код в каждом цикле, код будет входить в цикл несколько раз в секунду, подчеркивая вашу базу данных / сервер.

Но все же, nodejs или websockets - лучшие технологии для работы с чатами в реальном времени.

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

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

...