<?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 ; }
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 );
}
}
}
}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" );
$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>
$("<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 -> rolling_curl();
?>