zoukankan      html  css  js  c++  java
  • PHP实现异步请求非阻塞

    PHP实现异步请求非阻塞

    function fosck_post($url, $param){
    
        $host = parse_url($url, PHP_URL_HOST);
        $port = 80;
    
        $urlInfo = parse_url($url);
        if (isset($urlInfo['scheme']) && strcasecmp($urlInfo['scheme'], 'https') === 0) //HTTPS
        {
            $prefix = 'ssl://';
            $port = 443;
        }else{  //HTTP
            $prefix = 'tcp://';
            $port = isset($urlInfo['port']) ? $urlInfo['port'] : 80;
        }
    
    
        $errno = '';
        $errstr = '';
        $timeout = 30;
    
        $data = http_build_query($param);
    
        // create connect
        $fp = fsockopen($prefix. $host, $port, $errno, $errstr, $timeout);
    
        if(!$fp){
            return false;
        }
    
        // send request
        $out = "POST ${url} HTTP/1.1
    ";
        $out .= "Host:${host}
    ";
        $out .= "Content-type:application/x-www-form-urlencoded
    ";
        $out .= "Content-length:".strlen($data)."
    ";
        $out .= "Connection:close
    
    ";
        $out .= "${data}";
    
        fwrite($fp, $out);
    
        //忽略执行结果;否则等待返回结果
        //        if(APP_DEBUG === true){
        if(false){
            $ret = '';
            while (!feof($fp)) {
                $ret .= fgets($fp, 128);
            }
        }
    
        usleep(20000); //fwrite之后马上执行fclose,nginx会直接返回499
    
        fclose($fp);
    }
    
  • 相关阅读:
    slice()与splice()
    apply和call函数
    参数arguments
    获取用户当前位置并设为中心点
    数组中元素为对象形式的去重
    判断浏览器环境(微信、支付宝)
    h5车牌号输入键盘
    点击事件的延迟
    jQuery修改伪元素
    webSocket认识
  • 原文地址:https://www.cnblogs.com/ccw869476711/p/15149054.html
Copyright © 2011-2022 走看看