내 웹 사이트에서 long-polling info from mysql not working 과 비슷한 스크립트를 사용하고 있습니다. 해당 웹 페이지에서 페이지를 새로 고침하거나 다른 링크를 클릭하면 오류 경고가 표시되고 + 웹 사이트가 심각하게 지연되기 시작합니다. 어떤 사람이 원인이 무엇인지 말해 줄 수 있습니까?ajax long polling with mysql
내 코드 :
$oldIDq = mysql_query("SELECT * FROM messages ORDER BY id DESC LIMIT 1");
while($oldrow = mysql_fetch_array($oldIDq)){
$oldID = $oldrow['id'];
}
$func = '
var oldID = '.$oldID.';
function wait() {
$.ajax({
type: "GET",
url: "../scripts/msg_scripts/msg.php?oldid=" + oldID,
async: true,
cache: false,
success: function (data){
var json = eval(\'(\' + data + \')\');
if (json[\'msg_content\'] != "") {
alert("new meassage added");
}
oldID = json[\'oldID\'];
setTimeout(\'wait()\',1000);
},
error: function(XMLHttpRequest, textStatus, errorThrown){
alert("error: " + textStatus + "(" + errorThrown + ")");
setTimeout(\'wait()\',15000);
}
});
}
$(document).ready(function(){
wait();
});
';
서버 : 여기에 $ _GET에서의
<?php
session_start();
$connect = mysql_connect ("localhost", "root", "")
or die ("couldnt connect");
mysql_select_db ("***") or die ("not found"); //if db was not found die
mysql_query("SET NAMES 'utf8'");
$oldID = $_GET['oldid'];
$result = mysql_query("SELECT id FROM messages ORDER BY id DESC LIMIT 1");
while($row = mysql_fetch_array($result))
{
$last_msg_id = $row['id'];
}
while($last_msg_id <= $oldID)
{
usleep(1000);
clearstatcache();
$result = mysql_query("SELECT id FROM messages ORDER BY id DESC LIMIT 1");
while($row = mysql_fetch_array($result))
{
$last_msg_id = $row['id'];
}
}
$response = array();
$response['msg'] = 'new';
$response['oldID'] = $last_msg_id;
echo json_encode($response);
?>
@ moonwave99 - 나는 동의한다. –
aaaargh! 도움! eval === evil은 JSON.parse (jsonString) instaid를 사용합니다! 그리고 당신은 파싱이 필요조차하지 않습니다! jquery는'dataType : 'json'' 매개 변수를 추가하면 당신을 위해 그것을 할 수 있습니다! – VDP
당신이 그것을 시도합니다 감사합니다 :) – durian