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

PHP httpリクエスト処理クラス

WBOY
WBOYオリジナル
2016-07-25 08:42:031031ブラウズ

[PHP]代码

  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. public static functioncurl_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_RETURTRANSFER, 1);
  46. curl_setopt($ch, CURLOPT_POST, 1);
  47. curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
  48. curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0);
  49. curl_setopt($ch, C URLOPT_TIMEOUT、$ timeout);
  50. $result =curl_exec($ch);
  51. curl_close($ch);
  52. if (is_string($result) && strlen($result))
  53. {
  54. return $result;
  55. }
  56. else
  57. {
  58. return false;
  59. }
  60. }
  61. /**
  62. * 複数の URL 並列リクエスト
  63. *
  64. * @param array $urls URL 配列
  65. * @param integer $timeout タイムアウト時間 (秒)
  66. * @return array $res return result
  67. */
  68. public static functioncurl_get_urls($urls, $timeout = 1)
  69. {
  70. $mh=curl_multi_init();
  71. $chs=array();
  72. foreach ($urls を $url として)
  73. {
  74. $ch=curl_init();
  75. curl_setopt($ch,CURLOPT_URL,$url);
  76. curl_setopt($ch,CURLOPT_HEADER,false);
  77. curl_setopt($ch,CURLOPT_RETURNTRANSFER,true) ;
  78. curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,1);
  79. curl_setopt($ch,CURLOPT_TIMEOUT,$timeout);
  80. curl_multi_add_handle($mh,$ch);
  81. $chs[]=$ch;
  82. }
  83. $active=null ;
  84. do {
  85. $mrc=curl_multi_exec($mh,$active);
  86. }while($mrc == CURLM_CALL_MULTI_PERFORM);
  87. while($active && $mrc == CURLM_OK)
  88. {
  89. if(curl_multi_select($mh) != -1)
  90. {
  91. do{
  92. $mrc=curl_multi_exec($mh,$active);
  93. }while($mrc == CURLM_CALL_MULTI_PERFORM);
  94. }
  95. }
  96. $res=array();
  97. foreach($ chs as $ch)
  98. {
  99. $res[]=curl_multi_getcontent($ch);
  100. curl_multi_remove_handle($mh,$ch);
  101. }
  102. curl_multi_close($mh);
  103. return $res;
  104. }
  105. }
复制代コード
PHP、http


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。