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;
  • 相关阅读:
    关于 Bellman-Ford 与 Floyd 算法的一点感想
    中途相遇法 解决 超大背包问题 pack
    具体一些的博弈论 sqrstone
    SG函数学习总结
    mc
    string
    积木大赛
    pta l3-20(至多删三个字符)
    pta l3-7(天梯地图)
    ucore-lab1-练习2report
  • 原文地址:https://www.cnblogs.com/sky-yu/p/9837515.html
Copyright © 2011-2022 走看看