thinkphp长轮询查询结果

1.长轮询查询结果,稍微优化了一下sleep的时间,可以参考一下
2.还有下面那几个函数是为了防止报错设置的,上面有对应的意思可以看看,set_time_limit 一定不能少,其他可以去掉如果不报错的话

    public function Search(XhyRequest $request){

        $array = $request->param('request_id');

        // 设置请求数据和时间
        $time= 12;

        if (!$array) {

            return $this->fail('没有request_id','',Code::NO_REQUEST_ID);

        }else{

            set_time_limit(0);//无限请求超时时间

            ini_set('memory_limit', '-1'); //内存无限

            ini_set("max_execution_time", "500");//代码执行时间

            ignore_user_abort(true);//用户断开会继续执行,默认false

            $i=0;

            while (true){

                if ($i<3) {
                    sleep(3);    //延迟三秒
                    $i=$i+3;
                }elseif($i<7){
                    sleep(2);    //延迟二秒
                    $i=$i+2;
                }else{
                    sleep(1);    //延迟一秒
                    $i++;
                }

                //若得到数据则马上返回数据给客服端,并结束本次请求
                $arrays = Db::name('t_homework_record')
                ->where('homework_record_id',$array)
                ->find();

                if($arrays){

               //打印的结果赋值输出
                    
                    return $this->success($data,'success');

                }

                //到指定超时时间还未返回数据则断开连接
                if($i == $time){
                    return $this->fail('请求超时','',Code::TIMEOUT);

                }

            }

        }
    }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值