2011-01-05 2 views
3

Я хочу узнать, как сделать одну из этих систем с нуля, и я нахожу много нежелательных ссылок в Google. Я просто хочу простой учебник для большинства базовых чатов PHP и MySQL, поэтому я могу понять концепцию, прежде чем я начну возиться с jQuery/AJAX.Как я могу создать чат в реальном времени PHP/MySQL?

+2

Я думаю, этот вопрос немного расплывчатым - может быть, если вы сфокусированы это немного больше на конкретный аспект, о котором вы беспокоитесь, поможет. Вы не говорите, что ваш уровень знаний с PHP, дизайн базы данных и т. Д., Так какой уровень учебника вы ищете? – Polsonby

+1

кадров + 'meta-refresh' был до эпохи AJAX –

+0

Какой смутный вопрос. У вас может быть больше удачи, если вы попросите о помощи по определенной части вашего проекта, а не просто попросите учить все это. –

ответ

2

Очень простая отправная точка

есть таблица базы данных для Message

id | user | timestamp | message 

И есть PHP страница, которая отправляет запрос AJAX читать новые сообщения.

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

Когда запрос Ajax возвращает сообщение (лучше всего ответ JSON), выведите пользователя, время и сообщение на страницу с помощью JQuery.

+0

Я просто написал свое первое приложение ajax, так что все еще очень новичок в этом. Допустимо ли проводить опрос в браузере? Не приведет ли это к высокому использованию процессора и т. Д.? – zaidwaqi

+0

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

+0

интересный ... спасибо, особенно за ключевое слово – zaidwaqi

3

Живая часть вашего чата - сложная часть, если вы только начинаете, я пропустил бы это. Начните с создания простой гостевой книги, а затем добавьте дополнительные функции.

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

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

+0

Но как насчет части оператора? Должен быть оператор (admin) для обработки входящих сообщений клиента и отвечать на них, правильно? Итак, если я правильно понимаю, скрипт на стороне администратора будет проверять последние записи в базе данных (через каждые равные промежутки времени, скажем, каждые 10 секунд, используя ajax) и показывать администратору информацию о сообщении и соответствующем клиенте. Поэтому администратор может выбрать клиента и отправить ему ответ. Затем на стороне клиента мы должны показывать сообщения, предназначенные для этого клиента (снова через регулярные промежутки времени). –

6

PHP/MySQL чат 101:

1) пользователь открывает browser
2) Пользователь вводит address в Брауэр
3) браузер посылает recieves HTTP
) сервер HTTP запрос
4) server запрос 5 говорит PHP интерпретатору для запуска PHP script
6) PHP-скрипт connects до MySQL database
7) PHP-скрипт retrieves list of messages
8) PHP генерирует ответ HTTP, выполненный из HTML кода с сообщениями и form
9) Сервер отправляет ответ HTTP в браузер
10) Браузер рисует HTML от ответа HTTP
типов 11) Пользователя нового сообщения и отправляет форму
12) Браузер посылает запрос HTTP POST
13) ...

3

Найдено очень интересный урок здесь

http://tutorialzine.com/2010/10/ajax-web-chat-php-mysql/

+1

Хотя это теоретически может ответить на вопрос, [было бы предпочтительно] (http://meta.stackexchange.com/q/8259) включить сюда основные части ответа и предоставить ссылку для справки. –

0

Если вы хотите использовать php и mySQL для общения в чате, у вас есть отдельная таблица для непрочитанных сообщений. Если вы опросите, вам, скорее всего, понадобится проверить базу данных на новые сообщения каждые 100 мс или около того. Если ваша общая таблица сообщений составляет 1000 строк, проверка каждые 100 мсек будет убивать ваш сервер (особенно если подключено много пользователей).Я бы структурировал мою базу данных mySQL с таблицей только для непрочитанных сообщений и переместил их в большую таблицу для старых сообщений после чтения. Таким образом, вы не проверяете большую таблицу все время.

Еще лучше использовать базу данных кеша для непрочитанных сообщений, таких как redis (facebook используется memcacheD).

Даже еще лучше просто не использовать PHP все вместе и использовать событийно-управляемый язык с обратными вызовами, как Node.js