ホームページ  >  記事  >  バックエンド開発  >  httpリクエスト処理クラス

httpリクエスト処理クラス

WBOY
WBOYオリジナル
2016-07-25 09:01:56943ブラウズ
httpリクエスト処理クラス http://blog.qita.in/?post=496
  1. /**
  2. * http リクエスト処理クラス (CURL に基づいてカプセル化)
  3. *
  4. * @author Xiwei Ye
  5. * @version $Id$
  6. */
  7. class cls_http_request
  8. {
  9. /**
  10. * メソッドリクエストの取得 (curl)
  11. *
  12. * @param string $url リクエストされた URL
  13. * @param integer $timeout タイムアウト (秒)
  14. * @return string (リクエスト成功) false (リクエスト失敗)
  15. |*/
  16. パブリック静的関数curl_get($url, $timeout = 1)
  17. {
  18. $ch =curl_init() ;
  19. curl_setopt($ch, CURLOPT_URL, $url);
  20. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  21. curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
  22. $result =curl_exec($ch);
  23. curl_close($ ch);
  24. if (is_string($result) && strlen($result))
  25. {
  26. return $result;
  27. }
  28. else
  29. {
  30. return false;
  31. }
  32. }
  33. /**
  34. * Post request
  35. *
  36. * @param string $url リクエストされた URL
  37. * @param array $data リクエストされたパラメータ配列 (連想配列)
  38. * @param integer $timeout タイムアウト時間 (秒)
  39. * @return string( Request成功しました) false (リクエストは失敗しました)
  40. */
  41. パブリック静的関数curl_post($url, $data, $timeout = 2)
  42. {
  43. $ch =curl_init();
  44. curl_setopt($ch, CURLOPT_URL, $url);
  45. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  46. curl_setopt($ ch、curlopt_post、1);
  47. curl_setopt($ ch、curlopt_postfields、$ data); ($ch);
  48. curl_close($ch);
  49. if (is_string($result) && strlen($result))
  50. {
  51. return $result;
  52. }
  53. else
  54. {
  55. return false;
  56. }
  57. }
  58. /**
  59. * 複数の URL 並列リクエスト
  60. *
  61. * @param array $urls URL 配列
  62. * @param integer $timeout タイムアウト時間 (秒)
  63. * @return array $res return result
  64. */
  65. パブリック静的関数curl_get_urls($urls, $timeout = 1)
  66. {
  67. $mh=curl_multi_init();
  68. $chs=array();
  69. foreach($urls as $url)
  70. {
  71. $ch=curl_init();
  72. curl_setopt($ch,CURLOPT_URL,$url);
  73. curl_setopt($ch,CURLOPT_HEADER,false);
  74. curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
  75. curl_setopt($ch,CURLOPT_CONNECTTIMEOUT) ,1);
  76. curl_setopt($ch,CURLOPT_TIMEOUT,$timeout);
  77. curl_multi_add_handle($mh,$ch);
  78. $chs[]=$ch;
  79. }
  80. $active=null;
  81. do {
  82. $mrc= curl_multi_exec($mh,$active);
  83. }while($mrc == CURLM_CALL_MULTI_PERFORM);
  84. while($active && $mrc == CURLM_OK)
  85. {
  86. if(curl_multi_select($mh) != -1)
  87. {
  88. do{
  89. $mrc=curl_multi_exec($mh,$active);
  90. }while($mrc == CURLM_CALL_MULTI_PERFORM);
  91. }
  92. }
  93. $res=array();
  94. foreach($chs as $ch)
  95. {
  96. $res[]=curl_multi_getcontent($ch);
  97. curl_multi_remove_handle($mh,$ch);
  98. }
  99. curl_multi_close($mh);
  100. return $res;
  101. }
  102. }
  103. 复制發
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。