php中用来可以做异步调用的代码

发布时间:2020-07-25 17:09:23 作者:xiao5461
来源:网络 阅读:312
    /**
     * 发送一个异步http协议的Get请求,不用关心结果
     * @param  $url
     * @param  $errno
     * @param  $errstr
     * @param  $time_out
     */
    static public function getAsn($url,$errno='',$errstr='',$time_out = 5) {
        //移除url中的空格,如果可以格式化url,或许会更好
        $url = str_replace(' ', '', $url);
    
        $arr = parse_url($url);
        $arr['port'] || $arr['port'] = 80;
        $fp = fsockopen($arr['host'],$arr['port'],$errno,$errstr,$time_out);
        if(!$fp) {
            return $errno." ".$errstr;
        }
        
        $arr['query'] && $arr['query'] = '?'.$arr['query'];
        $out = "GET ".$arr['path'].$arr['query']." HTTP/1.1\r\n";
        $out .= "Host: ".$arr['host']."\r\n";
        $out .= "Connection: Close\r\n\r\n";
        fwrite($fp,$out);
        fclose($fp);
    }
    /**
     * 异步post
     * @param  $url
     * @param  $post_arr
     * @param  $errno
     * @param  $errstr
     * @param  $time_out
     */
    static     function postAsn($url,$post_arr,$errno = '',$errstr='',$time_out = 5) {
        $arr = parse_url($url);
        $arr['port'] || $arr['port'] = 80; 
        $fp = fsockopen($arr['host'],$arr['port'],$errno,$errstr,$time_out);
        if(!$fp) {
            return $errno." ".$errstr;
        }
        $post_data = "";
        if($post_arr){
            //在这里还可以使用 http_build_query() 函数,将post的内容编码
            foreach ($post_arr as $key => $val){
                $post_data .= urlencode($key) ."=". urlencode($val)."&";
            }
            $post_data = substr($post_data, 0,-1);
        }
        $data_len = strlen($post_data);  
        $arr['query'] && $arr['query'] = '?'.$arr['query'];
        $out = "POST ".$arr['path'].$arr['query']." HTTP/1.1\r\n";
        $out .= "Host: ".$arr['host']."\r\n";
        $out .= "Content-type:application/x-www-form-urlencoded\r\n";  
        $out .= "Connection: Close\r\n";
        $out .= "Content-Length:$data_len\r\n\r\n"; 
        $out .= $post_data."\r\n";
        fwrite($fp,$out);
        fclose($fp);
    }


推荐阅读:
  1. php能用来开发做前端吗
  2. php可以用来做游戏脚本吗

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

php 代码 异步

上一篇:导入Github上的Gradle项目到Eclipse

下一篇:微服务的用户认证与授权杂谈(上)

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》