ajax-PHP-MySQL - это хорошая комбинация для приложения в чате?

Я планирую создать небольшую чат-комнату для моих друзей в моем университете. Поскольку я не хочу вкладывать деньги, я буду использовать бесплатный хостинг, который не позволяет мне устанавливать IRC-сервер. Также мне нравится использовать ajax и PHP, поскольку я их уже знаю.

Является ли самообновляющаяся страница ajax и PHP хорошей идеей? Как и каждую секунду, ajax запускает скрипт PHP, который возвращает последние, скажем, 20 записей MySQL в истории чата.

Когда пользователь что-то пишет, он вставляется в БД MySQL, как вы, наверное, уже поняли.

Это хорошая идея?

У вас есть другая идея для сохранения сообщений? что-то более оптимизированное, чем MySQL?

Или какая-то совершенно другая идея, которая могла бы удовлетворить мою цель?

Заранее спасибо!
Энди:)

РЕДАКТИРОВАТЬ: что лучше: MySQL DB или текстовый файл? (текстовый файл предпочитает jquery, почему?)

4 ответа

Вы можете сэкономить много скорости жесткого диска, если вы используете таблицы памяти, и вы должны выбрать правильные индексы.

Пример структуры БД:

CREATE TABLE `chat` (
 `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
 `date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
 `channel` varchar(16) NOT NULL,
 `user` varchar(32) NOT NULL,
 `text` varchar(255) NOT NULL,
 `private` varchar(32) DEFAULT NULL,
     PRIMARY KEY (`id`),
 KEY `private` (`private`),
 KEY `channel` (`channel`)
) ENGINE=MEMORY

У меня около 70-80 пользователей в сети, но я не получаю никакой нагрузки на сервер (сервер с процессором 2 ГГц)

Возможно, свободный хост должен иметь плохую базу данных. Так что, если вы постоянно к нему обращаетесь, ваш чат будет очень медленным (если чат не будет использоваться часто).

В любом случае, есть несколько бесплатных опций, которые вы можете использовать для своих целей (вместо разработки самостоятельно):

http://www.phpfreechat.net/

http://www.phpopenchat.org/

http://hot-things.net/blab-lite-ajax-chat

А вот несколько уроков с примерами:

http://css-tricks.com/4371-jquery-php-chat/

http://www.tutorialized.com/tutorials/PHP/Chat-Systems/1

http://php.resourceindex.com/Complete_Scripts/Chat/Shoutbox/

С уважением!

Это довольно типичный подход к обычному чату, и он мне кажется вполне подходящим. Единственное, что я хотел бы предложить - назначить каждой записи чата идентификатор автоинкремента, чтобы ваш ajax мог отслеживать последнее полученное сообщение. Таким образом, если последнее принятое сообщение имеет идентификатор 100, ajax может запрашивать элементы с идентификатором 101 или выше. Тогда вы только вытягиваете новые сообщения, и их можно просто добавить в окно чата вместо обновления всей страницы.

Зачем вам снова изобретать электричество? Как вы сказали:

Или какая-то совершенно другая идея, которая могла бы удовлетворить мою цель?

Есть много чатов, почему вы ими не пользуетесь?

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

Другие вопросы по тегам