关闭

PHP中只发起请求不接受响应,用途:上报

标签: php只请求不接受响应socketcurl
109人阅读 评论(0) 收藏 举报
分类:

只要用于只需要发起请求,不需要接收响应值的,因为接收响应值浪费大量时间

$url = 'http://tencentlog.com/stat/report.php';
$post_data = array();
$this->http_request($url,'POST',$post_data);
    //发起http请求之后立即关闭访问信息
    function http_get_host_ip($hostname){
		if($hostname == 'tencentlog.com'){
			return '183.61.46.160';
		}else if($hostname == 'union.tencentlog.com'){
		
			return '140.206.160.173';
		}
        return gethostbyname($hostname);
    }
    
    /**
     * http 请求   - mayer
     *
     * @param String $url
     * @param String $type  GET or POST
     * @param Array $post_data
     * @return false or String
     */
    function http_request($url, $type = "GET", $post_data = NULL)
    {
    	$type = strtoupper($type);
        $http_info = array();
        $url2 = parse_url($url);
        if(($socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) < 0){
            return false;
        }
        //set socket timeout
        socket_set_option($socket, SOL_SOCKET, SO_SNDTIMEO,    array("sec"=>1, "usec"=>0));
        $url2["path"] = ($url2["path"] == "" ? "/" : $url2["path"]);    $url2["port"] = ($url2["port"] == "" ? 80 : $url2["port"]);
        $host_ip = $this->http_get_host_ip($url2["host"]);
        if(($result = socket_connect($socket, $host_ip, $url2["port"])) < 0){
            socket_close($socket);
            return false;
        }
        $request =  $url2["path"] . ($url2["query"] != "" ? "?" . $url2["query"] : "") . ($url2["fragment"] != "" ? "#" . $url2["fragment"] : "");
        switch ($type){
            case 'GET':
                $in = "GET " . $request . " HTTP/1.1\r\n";
                $in .= "Accept: */*\r\n";
                $in .= "User-Agent: Lowell-Agent\r\n";
                $in .= "Host: " . $url2["host"] . "\r\n";
                $in .= "Connection: Close\r\n\r\n";
                if(!socket_write($socket, $in, strlen($in))){
                    socket_close($socket);
                    return false;
                }
                socket_close($socket);
                unset($in);
				//logger('send1.txt', $request.'___'.$url2["host"] );
                return true;
            break;
            case 'POST':

                //build post data
                $needChar = false;
                $post_data2 = '';
                foreach($post_data as $key => $val){
                    $post_data2 .= ($needChar ? "&" : "") . urlencode($key) . "=" . urlencode($val);
                    $needChar = true;
                }
                $in = "POST " . $request . " HTTP/1.1\r\n";
                $in .= "Accept: */*\r\n";
                $in .= "Host: " . $url2["host"] . "\r\n";
                $in .= "User-Agent: Lowell-Agent\r\n";
                $in .= "Content-type: application/x-www-form-urlencoded\r\n";
                $in .= "Content-Length: " . strlen($post_data2) . "\r\n";
                $in .= "Connection: Close\r\n\r\n";
                $in .= $post_data2 . "\r\n\r\n";
                unset($post_data2);
                $time1 = getTime();
                if(!@socket_write($socket, $in, strlen($in)) ){
                    header("Content-Type:text/plain;charset=utf-8");
                    echo sprintf( "Unable to write to socket: %s", socket_strerror( socket_last_error() ))  ;
                    socket_close($socket);
                    return false;
                }
                socket_close($socket);
                unset($in);
                return true;
            break;
            default:
                echo 'Unknowd method';
                exit;
        }
    }


0
0
猜你在找
深度学习基础与TensorFlow实践
【在线峰会】前端开发重点难点技术剖析与创新实践
【在线峰会】一天掌握物联网全栈开发之道
【在线峰会】如何高质高效的进行Android技术开发
机器学习40天精英计划
Python数据挖掘与分析速成班
微信小程序开发实战
JFinal极速开发企业实战
备战2017软考 系统集成项目管理工程师 学习套餐
Python大型网络爬虫项目开发实战(全套)
查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:83692次
    • 积分:1461
    • 等级:
    • 排名:千里之外
    • 原创:44篇
    • 转载:30篇
    • 译文:0篇
    • 评论:8条
    文章分类
    最新评论