ホームページ  >  記事  >  バックエンド開発  >  PHP と cURL を使用して URL を取得する

PHP と cURL を使用して URL を取得する

WBOY
WBOYオリジナル
2016-07-25 09:08:381040ブラウズ
http://css.dzone.com/articles/retrieving-urls-Parallel-curl
  1. class Footo_Content_Retrieve_HTTP_CURLParallel
  2. {
  3. /**
  4. * cURL を使用して URL のコレクションを並行して取得します。結果は、
  5. * URL をキーとして、
  6. * URL の内容を値として持つ連想配列として返されます。
  7. *
  8. * @param array $addresses 取得する URL の配列
  9. * @return array取得するように要求された各 URL のコンテンツ。
  10. **/
  11. public function remember($addresses)
  12. {
  13. $multiHandle =curl_multi_init();
  14. $handles = array();
  15. $results = array() ;
  16. foreach($addresses as $url)
  17. {
  18. $handle =curl_init($url);
  19. $handles[$url] = $handle;
  20. curl_setopt_array($handle, array(
  21. CURLOPT_HEADER => false,
  22. CURLOPT_RETURNTRANSFER => true,
  23. ));
  24. curl_multi_add_handle($multiHandle, $handle);
  25. }
  26. // ハンドルを実行します
  27. $result = CURLM_CALL_MULTI_PERFORM;
  28. $running = false;
  29. //セットアップして、リクエストを行います。
  30. while ($result == CURLM_CALL_MULTI_PERFORM)
  31. {
  32. $result =curl_multi_exec($multiHandle, $running);
  33. }
  34. // データがすべてのソケットに到着するまで待機します
  35. while($running && ($ result == CURLM_OK))
  36. {
  37. if (curl_multi_select($multiHandle) > -1)
  38. {
  39. $result = CURLM_CALL_MULTI_PERFORM;
  40. // ソケットを処理する必要があります
  41. while ($result == CURLM_CALL_MULTI_PERFORM)
  42. {
  43. $result =curl_multi_exec($multiHandle, $running);
  44. }
  45. }
  46. }
  47. // クリーンアップ
  48. foreach($handles as $url => $handle)
  49. {
  50. $results[$url] =curl_multi_getcontent($handle);
  51. curl_multi_remove_handle($multiHandle, $handle);
  52. curl_close ($handle);
  53. }
  54. curl_multi_close($multiHandle);
  55. return $results;
  56. }
  57. }
复制發


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