일괄적으로 URL을 열기 위한 PHP 컬의 구현 코드(curl_multi 클래스)
풀어 주다: 2016-07-25 08:55:05
-
- /*
- * curl_multi 经测试,大于四个网址时要比Foreach循环快..
- * by wc1217
- * edit:bbs.it-home.org
- */
- class curl_multi{
- //Curl句柄
- //private $curl_handle = null;
- //网址
- private $url_list = array();
- //参数
- private $curl_setopt = array(
- 'CURLOPT_RETURNTRANSFER' => 1, //结果返回给变量
- 'CURLOPT_HEADER' => 0, //要HTTP头不?
- 'CURLOPT_NOBODY' => 0, //不要内容?
- 'CURLOPT_FOLLOWLOCATION' => 0, //自动跟踪
- 'CURLOPT_TIMEOUT' => 6//超时(s)
- );
-
- function __construct($seconds = 30){
- set_time_limit($seconds);
- }
-
- /*
- * 设置网址
- * @list 数组
- */
- public function setUrlList($list = array()){
- $this->url_list = $list;
- }
-
- /*
- * 设置参数
- * @cutPot array
- */
- public function setOpt($cutPot){
- $this->curl_setopt = $cutPot $this->curl_setopt;
- }
-
- /*
- * 执行
- * @return array
- */
- public function exec(){
- $mh = curl_multi_init();
-
- foreach($this->url_list as $i => $url){
- $conn[$i] = curl_init($url);
-
- foreach($this->curl_setopt as $key => $val){
- curl_setopt($conn[$i], preg_replace('/(CURLOPT_w{1,})/ie', '
', $key), $val); }
curl_multi_add_handle($mh, $conn[$i]);
}
$active = false;
do{
$mrc = curl_multi_exec($mh, $active);
}while($mrc == CURLM_CALL_MULTI_PERFORM);
while($active and $mrc == CURLM_OK){
if(curl_multi_select($mh) != -1){
do{
$mrc = curl_multi_exec($mh, $active);
}while($mrc == CURLM_CALL_MULTI_PERFORM);
}
}
$res = array();
foreach($this->url_list as $i => $url){
$res[$i] = curl_multi_getcontent($conn[$i]);
curl_close($conn[$i]);
curl_multi_remove_handle($mh, $conn[$i]); //用完马上释放资源
}
curl_multi_close($mh);
return $res;
}
}
?>
复制代码
|
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
-
2024-10-22 09:46:29
-
2024-10-13 13:53:41
-
2024-10-12 12:15:51
-
2024-10-11 22:47:31
-
2024-10-11 19:36:51
-
2024-10-11 15:50:41
-
2024-10-11 15:07:41
-
2024-10-11 14:21:21
-
2024-10-11 12:59:11
-
2024-10-11 12:17:31