ajax-PHP-MySQL - это хорошая комбинация для приложения в чате? - PullRequest
1 голос
/ 25 сентября 2011

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

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

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

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

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

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

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

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

Ответы [ 4 ]

2 голосов
/ 25 сентября 2011

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

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

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/

С уважением!

2 голосов
/ 25 сентября 2011

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

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

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 ГГц)

1 голос
/ 25 сентября 2011

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

0 голосов
/ 25 сентября 2011

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

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

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

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

...