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秒内没有结果则返回
    }
    
}
?>

原文地址:https://www.cnblogs.com/xiongwei89/p/2981170.html