Я сделал чат, используя php и ajax, и я использую цикл while для проверки базы данных на наличие новых сообщений.
это код, который получает сообщение:
//retrive message
function update(){
$(document).ready(function(){
$.ajax({
async: true,
type: "POST",
url: "listen.php",
success: function(data){
$("#myp").before(data);
},
complete: function(){
window.setTimeout("update();",100);
}
});
});
};
//wating for new message
<?php
include_once("connect.php");
$type="";
while($type!=='n'){
usleep(1000);
$search=mysql_query("SELECT * from chat ORDER BY id DESC LIMIT 1");
$row=mysql_fetch_assoc($search);
$type=$row['type'];
$id=$row['id'];
}
echo $row['message'] . "<br/>";
mysql_query("UPDATE chat SET type='o' WHERE id=$id");
?>
теперь это работает нормально, php-файл постоянно проверяет наличие новых сообщений, функция обновления запускается при загрузке страницы и ожидает ответа.
но эффективно ли это? если бы я использовал это на веб-сайте, я боюсь, что это будет слишком сильно нагружать сервер из-за цикла while. Кто-нибудь знает способ сделать цикл while более дружественным к серверу?