码迷,mamicode.com
首页 > Web开发 > 详细

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

时间:2014-07-26 03:13:17      阅读:262      评论:0      收藏:0      [点我收藏+]

标签:php   异步   代码   

    /**
     * 发送一个异步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);
    }


php中用来可以做异步调用的代码,布布扣,bubuko.com

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

标签:php   异步   代码   

原文地址:http://fblsky.blog.51cto.com/1752592/1530173

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!