@Vadim1899

Оптимальна ли реализация чата?

Подскажите, оптимальна ли и эффективна следующая реализация чата:
1. Структура: имеется index.php, в нем в сайдбаре include chat.php. В сhat.php разметка чата, форма ввода сообщений, и include chat-messages.php. В chat-messages.php, соответственно, код PHP вывода сообщений из БД
2. Так же в chat.php ajax-запрос на обновление чата без перезагрузки страницы (url: 'check-chat.php',). Интервал обновления - пол секунды.
3. Выводится 100 последних сообщений

Возникают следующие вопросы:
1. Сильно ли эти запросы каждые пол секунды будут грузить БД?
2. Оптимальна ли данная реализация в целом?

Всем спасибо
З.Ы. только недавно начал разбираться в php, многого не знаю, поэтому не ругайте
  • Вопрос задан
  • 946 просмотров
Пригласить эксперта
Ответы на вопрос 6
megafax
@megafax
web-программист
А теперь открой эту страницу в 20 вкладках и посмотри на нагрузку.
Если хочешь чат - то смотри в сторону WebSocket а не в сторону Ajax
Ответ написан
Комментировать
politon
@politon
HTML5,CSS3,JS,PHP,SQL,API,canvas,animation...
Лучше смотри в сторону websocket
Если в чате будет флудить одновременно человек 50, думаю хост ляжет
Ответ написан
Комментировать
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
Если это не продакшн, а скажем, учебно-развлекательный проект, то пойдет. Можно увеличить интервал до 5 сек, а в базе выбирать по времени больше времени последнего полученного сообщения, это сократит нагрузку. Время надо отсылать при запросе к серверу. Все прочитанные получателем (т.е. отосланные в ответ на аякс запрос) записи чата помечаются в отдельном поле в таблице(например `readed` = 1), и в дальнейшем не выбираются. В идеале переписать на сокеты, ибо аякс интервалы не лучший способ реализации.
Ответ написан
Комментировать
@synapse_people
Попробуй передавать ID последнего сообщения в чате и получать только те смс,которые больше последнего, а не 100 каждый раз
Поменяй формат на JSON, просто 2 вектора(массивы)-ники и сообщения.
пол секунды меняй на 5 секунд
и все
Ответ написан
Комментировать
@kulli
web программист
А лучше всего используй comet сервер, удобно и производительно, посмотри в сторону https://comet-server.com, я делал проект с ним, все отлично работает и реализуется просто, документация подробная, можно как SaaS сервис юзать или на свой сервак ставить. Все бесплатно :)
Вот пара примеров как использовать codemarks.ru/php/ispolzovanie-comet-servera-dlya-s...
Ответ написан
Комментировать
@Levhav
Возьмусь за разработку проектов любой сложности.
Нет у вас система не оптимальна. Она вам базу положит на десятке пользователей онлайн (минимум 2 запрос к бд в секунду с одного человека, на 10 людях это уже 20 запросов в секунду)
Вот эти вопросы и ответы должны помочь
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы