-
- /*
- * テスト後、URL が 4 つ以上ある場合、curl_multi は Foreach ループよりも高速です。
- * by wc1217
- * edit: bbs.it-home.org
- * /
- classcurl_multi{
- //Curl ハンドル
- //private $curl_handle = null;
- //Web アドレス
- private $url_list = array()
- //パラメータ
- private $curl_setopt = array(
- 'CURLOPT_RETURTRANSFER' => ; 1, / / 結果は変数に返されます
- 'CURLOPT_HEADER' => 0, // HTTP ヘッダーが必要ですか?
- 'CURLOPT_FOLLOWLOCATION' => 0, //自動追跡
- ' CURLOPT_TIMEOUT' => 6//タイムアウト
- );
-
- function __construct($秒 = 30){
- set_time_limit($秒) }
-
- /*
- * セットURL
- * @list 配列
- * /
- public function setUrlList($list = array()){
- $this->url_list = $list; }
-
- /*
- * パラメータを設定
- * @cutPot 配列
- * /
- 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); ->curl_setopt as $key = > $val){
- curl_setopt($conn[$i], preg_replace('/(CURLOPT_w{1,})/ie', '$0', $key), $val) ;
- }
- curl_multi_add_handle($mh , $conn[$i]);
-
- $active = false;
- $mrc =curl_multi_exec($mh, $active) ; 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){ [$i] =curl_multi_getcontent($conn[$i]) ;
- curl_close($conn[$i]); //使用後すぐにリソースを解放します
- curl_multi_close($mh);
- $res を返す
- }
- }
- ?>
-
-
- コードをコピーします
-
-
-
-
-
-
-
-
-
-
-
|