您的位置:首页 > 编程语言 > PHP开发

bigpipe+curl(php)

2015-08-21 14:27 555 查看
<?php
class Multicurl{
private $param = array();
private $config= null;

public function __construct($param){
$this->param = array_merge($this->param,$param);
}

public function rolling_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_exec
while ($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); //还有句柄处理还在进行中
}

}
?>


<?php
class Singlecurl{
private $param = array();
private $config= null;

public function __construct($param){
$this->param = array_merge($this->param,$param);
}
public function rolling_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="d
a079
iv3"></div>
</body>
<script>
$("<link>")
.attr({ rel: "stylesheet",
type: "text/css",
href: "./inc/body.css"
})
.appendTo("head");

$("<script>")
.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();
?>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  curl php