Всем привет. Столкнулся с направлением с которым раньше работать не приходилось. Хотел бы разобраться в длинных опросах.
Пишу небольшой чат php + mysql + javascript. На данный момент тестово поставил короткие запросы чтобы получать сообщения. Но сам факт того что запрос отправляется каждые две секунды на сервер сейчас меня вообще не устраивает.
Облазил кучу форумов, начитался кучу документаций, но почти все они связаны с тем, как реализовать данный метод не при помощи php + mysql, а при помощи считывания файликов txt.
Подскажите пожалуйста, как реализвать данный метод при помощи php + mysql ?
Библиотеки, такие как
socket.io, комет серверы, не предлагайте. Не вижу смысла их использовать, если можно все сделать в чистом виде без лишних библиотек. Тем более что javascript и php это сделать позволяют.
Для примера, то что у меня есть.
Таблица сообщений построена так:
CREATE TABLE IF NOT EXISTS `messages_elements` (
`id` smallint (5) unsigned NOT NULL auto_increment,
`user` SMALLINT(5) NOT NULL,
`text` TEXT NOT NULL,
`date` TIMESTAMP default CURRENT_TIMESTAMP NOT NULL,
PRIMARY KEY (`id`),
KEY (`user`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
Отправляю я сообщения при помощи xhr со стороны javascript, и при помощи insert со стороны mysql.
После, получаю сами сообщения с базы массивом и разбиваю его при помощи while, пример:
$database = "SELECT * FROM messages_elements ORDER BY `date` ASC";
$query = $this->DB->query($database);
while ($message = $this->DB->fetch_array($query)){
$data = array(
'id' => $message['id'],
'user' => $message['user'],
'text' => $message['text'],
'date' => $message['date']
);
}
Ну и под конец загоняю все в JSON формат и через xhr вывожу его в блок с помощью innerHTML. Подскажите пожалуйста, как при моем методе можно реализовать длинный запрос ? Буду очень сильно благодарен.