使用 PHP 和 cURL 取得 URLs
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
發布: 2016-07-25 09:08:38
http://css.dzone.com/articles/retrieving-urls-parallel-curl
- class Footo_Content_Retrieve_HTTP_CURLParallel
- {
- /**
- * Fetch a collection of URLs in parallell using cURL. The results are
- * returned as an associative array, with the URLs as the key and the
- * content of the URLs as the value.
- *
- * @param array $addresses An array of URLs to fetch.
- * @return array The content of each URL that we've been asked to fetch.
- **/
- public function retrieve($addresses)
- {
- $multiHandle = curl_multi_init();
- $handles = array();
- $results = array();
-
- foreach($addresses as $url)
- {
- $handle = curl_init($url);
- $handles[$url] = $handle;
-
- curl_setopt_array($handle, array(
- CURLOPT_HEADER => false,
- CURLOPT_RETURNTRANSFER => true,
- ));
-
- curl_multi_add_handle($multiHandle, $handle);
- }
-
- //execute the handles
- $result = CURLM_CALL_MULTI_PERFORM;
- $running = false;
-
- // set up and make any requests..
- while ($result == CURLM_CALL_MULTI_PERFORM)
- {
- $result = curl_multi_exec($multiHandle, $running);
- }
-
- // wait until data arrives on all sockets
- while($running && ($result == CURLM_OK))
- {
- if (curl_multi_select($multiHandle) > -1)
- {
- $result = CURLM_CALL_MULTI_PERFORM;
-
- // while we need to process sockets
- while ($result == CURLM_CALL_MULTI_PERFORM)
- {
- $result = curl_multi_exec($multiHandle, $running);
- }
- }
- }
-
- // clean up
- foreach($handles as $url => $handle)
- {
- $results[$url] = curl_multi_getcontent($handle);
-
- curl_multi_remove_handle($multiHandle, $handle);
- curl_close($handle);
- }
-
- curl_multi_close($multiHandle);
-
- return $results;
- }
- }
复制代码
|
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
-
2025-02-26 03:58:14
-
2025-02-26 03:38:10
-
2025-02-26 03:17:10
-
2025-02-26 02:49:09
-
2025-02-26 01:08:13
-
2025-02-26 00:46:10
-
2025-02-25 23:42:08
-
2025-02-25 22:50:13
-
2025-02-25 21:54:11
-
2025-02-25 20:45:11