美文网首页PHP技术进阶
PHP伪异步实现 通过CURL实现PHP异步

PHP伪异步实现 通过CURL实现PHP异步

作者: 大熊BIGBEAR | 来源:发表于2018-11-10 00:25 被阅读6次

    介绍一种PHP通过curl实现异步处理的方式,目前应用在我的项目中,使用之前需要安装php_curl扩展

    因为curl请求的接口是同一个项目里面的,所以用这种方式比较方便,

    1. curl_setopt($ch, CURLOPT_TIMEOUT, 1);
      将curl超时时间设置为1s
    public function asynch($data)
        {
            $url = '';//接受curl请求的地址
    
            $ch = curl_init();
            curl_setopt($ch, CURLOPT_URL, $url);
    
            curl_setopt($ch, CURLOPT_POST, 1);
            curl_setopt($ch, CURLOPT_HTTPHEADER, Array("Content-Type:application/json; charset=utf-8"));
    
            curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));//post方式数据为json格式
            curl_setopt($ch, CURLOPT_TIMEOUT, 1);//设置超时时间为1s
    
            $result = curl_exec($ch);
            curl_close($ch);
            return $result;
        }
    
    
    1. ignore_user_abort(true);
      在接受请求的方法最前面加上ignore_user_abort(true);表示忽略与用户的断开,继续向下执行,不然过了1s超时时间会停止执行的
            ignore_user_abort(true);
            set_time_limit(0);
            $data = file_get_contents("php://input");//接收json数据
    

    业务场景概述:
    在开发微信公众号的时候,因为要接收用户发来的指令,执行一部分业务逻辑然后返回结果给用户,如果同步的方式,由于处理时间不确定且微信服务器在5s之内没有接收到响应,就会提示异常,所以想到利用微信公众平台的客服消息接口,异步通知客户处理结果,最终使用上面的方式,解决了这个问题

    相关文章

      网友评论

        本文标题:PHP伪异步实现 通过CURL实现PHP异步

        本文链接:https://www.haomeiwen.com/subject/hpunxqtx.html