Привет, я создал простое приложение для чата php/mysql/Ajax, и у меня есть несколько вопросов. перед этим позвольте мне объяснить, как это работает.
Итак, если пользователь находится на странице чата, ajax script отправляет запрос в php файл, который показывает истории чатов (последние сообщения), и возвращает его в HTML. Этот запрос циклически повторяется каждую секунду, чтобы отображать последние сообщения пользователю, просматривающему страницу.
пока он отлично работает.
теперь мой вопрос и беспокойство: 1.) Каковы недостатки использования такого метода, если таковые имеются? 2.) О чем я должен больше всего волноваться, если он получает большую базу пользователей, и многие люди используют его одновременно? (главным образом потому, что он делает запрос каждую секунду, для каждого пользователя на нем..)
таблица mysql является таблицей innodb, и я использую только один оператор SELECT без предложения WHERE.. что-то вроде SELECT * FROM table ORDER BY id DESC LIMIT 10
и т.д. (в основном, я делаю mysql что-то очень простое, как торт)
3.) Любое предложение приветствуется;)
Большое спасибо
Vikash
Определенно, вам нужно будет изучить проблемы масштабируемости как для веб-сервера, так и для сервера баз данных. Существуют такие технологии, как кластеризация MySQL для повышения производительности в базе данных и кластеризация веб-сайтов для HTTP-приложений.
При использовании в больших масштабах вы также можете посмотреть на обрезку таблицы, удалив ранние сообщения и сбросив их в отдельную таблицу для низкочастотного доступа. У вас также может быть некоторый метод кэширования запросов базы данных через некоторые рабочие потоки, поэтому чтение базы данных минимально, но интерфейс будет иметь возможность справляться с большим объемом запросов.
Я получил 60 человек в phpFreeChat (php/ajax/mysql chat), и это был полный босс процессора. Это привело к тому, что на коленях появился 8-ядерный сервер.