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

介绍一种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异步)