PHP与ajax的长轮询

2 篇文章 0 订阅
1 篇文章 0 订阅

关于PHP与Jquery的ajax长轮询的简单的写法

html代码:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>长轮询</title>
</head>
<script src="../test/jquery-3.2.1.js" ></script>
<body>
  <button type="" id="but" >测试</button> 
  <div id="bu"></div>
</body>
<script>    
$(function(){
    $("#but").bind('click',{but:$("#but")},function(e){
        $.ajax({
            type:"post",
            url:"data.php",
            data:{"time": Date.parse(new Date())/1000},   
            timeout: 5000,//5秒超时,可自定义设置 ,
            dataType:"html",
            success:function(result, textStatus){
                
                $("#bu").append("[state: " + textStatus + ", data: { " + result + "} ]<br/>");

                if (textStatus == "success") { // 请求成功  
                    e.data.but.click(); 
                } ;
            },
            error:function(XHR, textStatus, errorThrown){
                $("#bu").append("[state: " + textStatus + ", error: " + errorThrown + " ]<br/>");  
                if (textStatus == "timeout") { // 请求超时  
                    e.data.but.click(); // 递归调用  
                } else { // 其他错误,如网络错误等  
                    e.data.but.click();  
                }; 
            }
        });
    });
});
</script>
</html>


PHP代码:

<?php

if(empty($_POST['time'])) exit();
date_default_timezone_set("PRC");
set_time_limit(0);//设置请求时间为无限,长连接
$time = $_POST['time'];
while (true) {    
    sleep(3); // 业务处理
    $i = rand(0,100); // 产生一个0-100之间的随机数  
    if ($i > 50) { // 当$i>50 视为有数据变化  
        $responseTime = time();  
       	echo ('result:  ' . $i . '  response_time:  ' . $responseTime . '  request_time:  '. $time . '  use_time:  '.($responseTime - $time));  
        exit();  
    } else { // 没有数据变化
        sleep(8); 
        exit();  
    }  
}  
 
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值