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 ファイルは新しいメッセージがあるかどうかを常にチェックし、ページが読み込まれると更新機能が開始され、応答を待ちます。しかし、それは効率的ですか?これを Web サイトで使用すると、while ループのためにサーバーに過度の負荷がかかるのではないかと心配しています。whileループをよりサーバーフレンドリーにする方法を知っている人はいますか?