欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

bigpipe+curlphp

程序员文章站 2022-05-26 19:46:14
...
classMulticurl{private$param = array();
    private$config= null;

    publicfunction__construct($param){$this->param = array_merge($this->param,$param);
    }

    publicfunctionrolling_curl(){$chs = curl_multi_init();
        foreach ($this->param as$key => $value) {
            $ch = curl_init();
            $curl="{$value}?id={$key}";
            curl_setopt($ch, CURLOPT_URL,"{$curl}");
            curl_setopt($ch, CURLOPT_HEADER, 0);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
            curl_multi_add_handle($chs,$ch);
        }
        do{
            if (($status = curl_multi_exec($chs, $active)) != CURLM_CALL_MULTI_PERFORM) {
                if ($status != CURLM_OK) { break; } //如果没有准备就绪,就再次调用curl_multi_execwhile ($done = curl_multi_info_read($chs)) {
                    $info = curl_getinfo($done["handle"]);
                    $error = curl_error($done["handle"]);
                    $result = curl_multi_getcontent($done["handle"]);
                    echo$result;
                    curl_multi_remove_handle($chs, $done['handle']);
                    curl_close($done['handle']);
                    if ($active > 0) {
                        curl_multi_select($chs,0.5); //此处会导致阻塞大概0.5秒。
                    }
                }
            }
        }while($active); //还有句柄处理还在进行中
    }

}
?>
classSinglecurl{private$param = array();
    private$config= null;

    publicfunction__construct($param){$this->param = array_merge($this->param,$param);      
    }
    publicfunctionrolling_curl(){foreach ($this->param as$key => $value) {
            $ch = curl_init();
            $curl="{$value}?id={$key}";
            curl_setopt($ch, CURLOPT_URL,"{$curl}");
            curl_setopt($ch, CURLOPT_HEADER, 0);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
            $output = curl_exec ( $ch );
            echo$output;
            $tim="tim=".microtime(true)."\r\n";
            file_put_contents ( "test.txt" ,  $tim ,  FILE_APPEND|LOCK_EX );
        }
    }
}
?>
php
include_once ("Multicurl.class.php");
// include_once ("Singlecurl.class.php");$body=EOT
DOCTYPE html>html lang="en">head>meta charset="UTF-8">title>111/title>/head>script src="http://libs.baidu.com/jquery/1.9.0/jquery.js">/script>body>div id="div1">/div>div id="div2">/div>div id="div3">/div>/body>script>
$("")
    .attr({ rel: "stylesheet",
        type: "text/css",
        href: "./inc/body.css"
    })
    .appendTo("head");

$(")
    .attr({src: "./inc/body.js"})
    .appendTo("head");
/script>
EOT;

echo $body;

$str_arr=array(
    "div1"=>"http://localhost/curltest/1.php",
    "div2"=>"http://localhost/curltest/1.php",
    "div3"=>"http://localhost/curltest/1.php",
    );

$test=new Multicurl($str_arr);
// $test=new Singlecurl($str_arr);$test->rolling_curl();
?>

版权声明:本文为博主原创文章,未经博主允许不得转载。

以上就介绍了bigpipe+curlphp,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

bigpipe+curlphp

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

相关文章

相关视频