ajax长轮询实例
html页面:
<script>
$(function(){
function test(){
$url="xx.php";
comet=$.post($url,function(data){
if(data==null){
comet.abort(); //关闭之前的comet ajax请求
test(); //如果返回空则继续请求
return;
}
//$('#sub').append('<div>'+data.uid+'</div>');
$('#sub').html(data.uid); //如果返回成功则写到页面里
comet.abort(); //关闭之前的comet ajax请求
test(); //继续发起一个请求
},"json")
}
test(); //启动该方法
})
</script>
后台php页面:
<?php
set_time_limit(0); //无限请求超时时间
$i=0;
//无限循环
while(true){
$i++;
$curl=curl_init();
curl_setopt($curl,CURLOPT_URL,"http://127.0.0.1/dsb.php");
curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);
$data=curl_exec($curl);
sleep(1); //用sleep来解决cpu压力
if($data==1){
echo json_encode(array("uid"=>date('Y-m-d:H:i:s',time()))); //如果匹配成功则返回结果
return;
}
if($i==10){
exit; //如果10秒内没有结果则返回
}
}
?>