От чего, в первую очередь, зависит производительность чата на php+ajax?

программирование программы php AJAX чат

нужно написать чат для зарегистрированных юзеров сайта на php+ajax. писать, скорее всего, будут много. в комнате может быть и 1000 человек, будут выдавать сообщений эдак до 5 в секунду.
на что первостепенно обращать внимание при оптимизации?
на что второстепенно?)
Ответы:
1. Для БД + распределения по комнатам - рекомендую использовать Redis Pub/Sub
2. Для  чатов все же рекомендовал бы использовать технологии больше для них подходящие и php - не одна из них, смотрите в сторону NodeJS (я сам пишу на php 6+лет)
3. Сразу продумывайте репликацию / шардинг данных между серверами, так как X_комнат*1000/5_сек = X*200 запросов/сек - эт не шутки)))
4. Если нужно сохранять переписки на сервере - вполне реально, что потребуется отдельная приблуда для пакетной загрузки данных из Redis с его последующей очисткой.
5. Обязательно жестко проверяйте входные параметры на размер (POST), на наличие файлов - если такие есть - сразу в бан.
6. Есть еще мысли на счет фильтров: реклама/мат/** но это уже эвристика))
PHP меньше всего подходит для реализации такого функционала. В случае с чатом необходимо иметь постоянное подключение для возможности двустороннего обмена между клиентом и сервером. PHP "из коробки" такую возможность обеспечить не сможет. Есть специальный фреймворк, заточенный на работу скриптов в режиме реального времени, phpDaemon. Но он уже лет 6 разрабатывается и всё ещё сырой. И увы, это далеко не тот PHP, к которому вы привыкли.
> на что первостепенно обращать внимание при оптимизации?
На то, что при каждом запросе PHP должен будет загрузить PHP-скрипт, инициализировать глобальные переменные и переменные, содержащие данные о сервере, обработать входящие данные, распределить их по массивам и внутренним структурам. Еще на каждый запрос будет заново запускаться вся инициализация вашей системы (php-скриптов, фреймворка и т. д.). Потом еще каждый раз заново нужно считать конфиг, подключиться к БД, считать оттуда основные данные, необходимые для работы и прочее, прочее, прочее.
Если используете CGI, а не fpm, то еще необходимо подождать, пока интерпретатор прочитается операционкой с диска, запустится и тд.
Еще раз учтите, что это будет происходить при каждом запросе пользователя. Т. е. с ваших же слов — до 5 раз в секунду при отправках сообщений, плюс сколько-то раз при простых обновлениях списка сообщений в браузерах пользователей.
Вообщем, это дофига лишней работы, не связанной непосредственно с чатом, при каждом запросе. И на это будет уходить большая часть времени и ресурсов.
Поэтому PHP в вашей задаче — не самый подходящий инструмент.
Чтобы использовать PHP, вам придется на нем писать сам сервер и реализовывать асинхронную обработку запросов на его стороне, что в случае PHP не очень тривиально (пхп сам по себе разработан из расчета "обработал запрос и умер").


11 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.