나는 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 루프 때문에 서버에 너무 많은 스트레스를 가할까 봐 걱정된다. 누군가가 방법을 알고 루프를 서버에보다 친숙하게 만드는 동안 만들 수 있습니까?
감사합니다. 그러나 나는 혜성이 정확히 무엇인지 이해하지 못합니다. 어디에서 더 읽을 수 있습니까? 왜냐하면 나는 무엇을 찾고 있는지 정확히 모르기 때문에 구글은 정말로 도움이되지 않는다. – nope
@Petre Comet은 클라이언트가 서버에 연결하여 서버가 클라이언트에 데이터를 보낼 준비가 될 때까지 수신 대기합니다. 이를 통해 일종의 "2-way"의사 소통이 가능합니다. 일반적으로 HTTP는 편도 (클라이언트 -> 서버)이지만 Comet은 서버가 클라이언트에 이벤트를 푸시 할 수있게합니다. 각 연결에는 PHP 프로세스 (램 오버 헤드로 인해 매우 제한적 임)가 필요하기 때문에 PHP를 사용하는 것이 다소 어렵습니다. 이것이 타사 혜성 서버를 조사하는 것이 더 좋은 이유입니다. 그는 예입니다. http://github.com/mcarter/hookbox/tree/master/examples/php_simple_chat/ –