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(); ?>
相关文章推荐
- 一个关于if else容易迷惑的问题
- PHP5.2.*防止Hash冲突拒绝服务攻击的Patch
- 深入理解PHP之匿名函数
- JSP/PHP基于Ajax的分页功能实现
- 关于PHP通过PDO用中文条件查询MySQL的问题。
- 什么是设计模式
- PHP数据库长连接mysql_pconnect的细节
- Php Installing An Expansion
- PHP+Apache在Windows 9x下的安装和配置
- IIS 6 的 PHP 最佳配置方法
- 安装Apache和PHP的一些补充
- Linux Apache+MySQL+PHP
- 建立Apache+PHP+MySQL数据库驱动的动态网站
- PHP 5.3.0 安装分析心得
- apache 环境下 php 的配置注意事项
- ASP.NET、ASP、PHP、JSP之间有什么区别?
- PHP VBS JS 函数 对照表
- C语言实现的统计php代码行数功能源码(支持文件夹、多目录)
- php xml 入门学习资料