@Synacs-U
Html, CSS, Js, Jquery, PHP, Mysql

Как реализовать постоянную взаимосвязь ajax+php не перегружая сервер?

Добрый день.
В php, при использовании if'ов, он постоянно нагружает сервер
5bb8cd08c1377152816660.png
Задумка следующая:
Я постоянно отправляю запрос ajax (раз в 5 секунд), что бы тот проверил, обновилась ли информация на сервере (php файл), или нет. Соответственно в php примерное количество if'ов. включая подсасывание из бд). Собственно это нагружает сервер. Каким образом, можно реализовать так, что бы минимизировать нагрузку? буду очень рад помощи
(гуглил, ни чего не нашел)
  • Вопрос задан
  • 2168 просмотров
Решения вопроса 1
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Вариантов снять нагрузку - несколько (речь про AJAX):
1. Запрашивайте (раз в 5 секунд) только тогда, когда пользователь: водит мышку, скролит страницу, уходит или возвращается на вкладку в браузере, если блок с обновляемой информацией находится внутри границ viewport'a (или оказывается там).
Т.е., все случаи, когда пользователь не следит за обновлением информации, то и не нужно "мучить" сервер по-пусту...
2. На стороне сервера - кладите информацию (предназначенную для всех) в общий кэш: в память и затем проверяйте оттуда без обращения к БД.
3. Используйте проверку и обновление данные по cron, чтобы обновлять кэш (как для контента, предназначенного для всех, так и по-пользовательскому контенту) для всех, находящихся в данный момент on-line.

Или используйте сокеты (и, конечно, про кеш - не забывайте).
Ответ написан
Пригласить эксперта
Ответы на вопрос 5
zoonman
@zoonman
⋆⋆⋆⋆⋆
Пора перестать заниматься херней и открыть для себя Server Sent Events или человеческую работу с веб-сокетами.
А лучше использовать что-нибудь такое https://github.com/wandenberg/nginx-push-stream-module
Ответ написан
Комментировать
@artinnok
бекенд-программист
Почитайте про вебсокеты - прямо просятся в Вашем случае.
Ответ написан
Комментировать
thewind
@thewind
php программист, front / backend developer
Лучше всего почитайте про long polling запросы - вот ваше решение.
Ответ написан
Комментировать
iCoderXXI
@iCoderXXI
React.JS/FrontEnd engineer
Как уже выше коллеги писали, websockets (что на пыхе нетривиально реализовать), на худой конец longpolling (что вполне реально, но это костыль в почти 19 году).
Ответ написан
Комментировать
@SerezhenkaPetro
LongPoll - то что вам нужно.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы