[PHP]代码
- /**
- * http リクエスト処理クラス (CURL に基づいてカプセル化)
- *
- * @author Xiwei Ye
- * @version $Id$
- */
- class cls_http_request
- {
-
- /**
- * メソッドリクエストの取得 (curl)
- *
- * @param string $url リクエストされた URL
- * @param integer $timeout タイムアウト (秒)
- * @return string (リクエスト成功) false (リクエスト失敗)
- |*/
- public static functioncurl_get($url, $timeout = 1)
- {
- $ch =curl_init();
- curl_setopt($ch, CURLOPT_URL, $url);
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
- curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
- $result =curl_exec( $ch);
- curl_close($ch);
- if (is_string($result) && strlen($result))
- {
- return $result;
- }
- else
- {
- return false;
- }
- }
-
- / **
- * Post request
- *
- * @param string $url リクエストされた URL
- * @param array $data リクエストされたパラメータ配列 (連想配列)
- * @param integer $timeout タイムアウト時間 (秒)
- * @return string( Request成功しました) false (リクエストは失敗しました)
- */
- パブリック静的関数curl_post($url, $data, $timeout = 2)
- {
- $ch =curl_init();
- curl_setopt($ch, CURLOPT_URL, $url);
- curl_setopt($ ch, CURLOPT_RETURTRANSFER, 1);
- curl_setopt($ch, CURLOPT_POST, 1);
- curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
- curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0);
- curl_setopt($ch, C URLOPT_TIMEOUT、$ timeout);
- $result =curl_exec($ch);
- curl_close($ch);
- if (is_string($result) && strlen($result))
- {
- return $result;
- }
- else
- {
- return false;
- }
- }
-
- /**
- * 複数の URL 並列リクエスト
- *
- * @param array $urls URL 配列
- * @param integer $timeout タイムアウト時間 (秒)
- * @return array $res return result
- */
- public static functioncurl_get_urls($urls, $timeout = 1)
- {
- $mh=curl_multi_init();
- $chs=array();
- foreach ($urls を $url として)
- {
- $ch=curl_init();
- curl_setopt($ch,CURLOPT_URL,$url);
- curl_setopt($ch,CURLOPT_HEADER,false);
- curl_setopt($ch,CURLOPT_RETURNTRANSFER,true) ;
- curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,1);
- curl_setopt($ch,CURLOPT_TIMEOUT,$timeout);
- curl_multi_add_handle($mh,$ch);
- $chs[]=$ch;
- }
- $active=null ;
- do {
- $mrc=curl_multi_exec($mh,$active);
- }while($mrc == CURLM_CALL_MULTI_PERFORM);
- while($active && $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($ chs as $ch)
- {
- $res[]=curl_multi_getcontent($ch);
- curl_multi_remove_handle($mh,$ch);
- }
- curl_multi_close($mh);
- return $res;
- }
- }
复制代コード
|