zoukankan      html  css  js  c++  java
  • php fsockopen异步请求非阻塞模式执行

    //非阻塞请求
    function sock_data($url) {
        $host = parse_url($url,PHP_URL_HOST);
        $port = parse_url($url,PHP_URL_PORT);
        $port = $port ? $port : 80;
        $scheme = parse_url($url,PHP_URL_SCHEME);
        $path = parse_url($url,PHP_URL_PATH);
        $query = parse_url($url,PHP_URL_QUERY);
        if($query) $path .= '?'.$query;
        if($scheme == 'https') {
            $host = 'ssl://'.$host;
        }
     
        $fp = fsockopen($host,$port,$error_code,$error_msg,1);
        if(!$fp) {
            return array('error_code' => $error_code,'error_msg' => $error_msg);
        }
        else {
            stream_set_blocking($fp,0);//开启了非阻塞模式
            stream_set_timeout($fp,1);//设置超时
            $header = "GET $path HTTP/1.1
    ";
            $header.="Host: $host
    ";
            $header.="Connection: close
    
    ";//长连接关闭
            fwrite($fp, $header);
            usleep(1000); // 如果没有这延时,可能在nginx服务器上就无法执行成功
            fclose($fp);
            return array('error_code' => 0);
        }
        
    }
    

      测试一下:

    echo date('Y-m-d H:i:s'), PHP_EOL;
    sock_data("http://www.baidu.com");
    echo date('Y-m-d H:i:s'), PHP_EOL;
  • 相关阅读:
    Python学习之路—2018/6/27
    Python学习之路—2018/6/26
    python面试315问
    day4(css优先级)
    date3(form表单,今天html结束,css)
    date2(html)
    day1
    mysql数据库(7day)
    mysql数据库(day6)索引,ORM框架
    mysql数据库(day5)-视图,触发器,存储过程
  • 原文地址:https://www.cnblogs.com/sky-yu/p/9837515.html
Copyright © 2011-2022 走看看