2012-09-22 46 views
1

可能重複:
cURL Mult Simultaneous Requests (domain check)PHP捲曲快速檢查是否存在網站

我想請檢查站點存在。 (如果它反應足夠好)問題是我的域數組是20,000,我試圖儘可能地加快這個過程。

我做了一些研究和碰到過這樣的網頁,其中詳細說明的同時捲曲請求 - > http://www.phpied.com/simultaneuos-http-requests-in-php-with-curl/

我也找到了這個網頁,這似乎是檢查的一個很好的方式,如果一個域名的網頁達 - >http://www.wrichards.com/blog/2009/05/php-check-if-a-url-exists-with-curl/

有關如何快速檢查20,000個域以查看它們是否已啓動的任何想法?

+0

是的,該帖子沒有最終幫助,我不能刪除它... – user1647347

+0

你應該編輯你的原始問題,而不是發佈一個新的問題。 –

回答

1

退房RollingCurl

它可以讓你執行多個捲曲的請求。 下面是一個例子:

require 'curl/RollingCurl.php'; 
    require 'curl/RollingCurlGroup.php'; 


    $rc = new RollingCurl('handle_response'); 
      $rc->window_size = 2; 




      foreach($domain_array as $domain => $value) 
      { 






       $request = new RollingCurlRequest($value); 

       // echo $temp . "\n"; 


        $rc->add($request); 




      } 

      $rc->execute(); 




    function handle_response($response, $info) 
    { 

      if($info['http_code'] === 200) 
      { 
       // site exists handle response data 
      } 

    } 
+0

這看起來很有前途......我現在試試吧 – user1647347

+0

得到這個工作,似乎很快。問題是$ rc-> window_size;在他的例子中,它被設置爲20,但是這使得腳本僅處理前20個域。看起來它不會實際處理批次 – user1647347

+0

否窗口大小是一次執行的併發連接數。 –

2
$http = curl_init($url); 
$result = curl_exec($http); 
$http_status = curl_getinfo($http, CURLINFO_HTTP_CODE); 
curl_close($http); 
if($http_status == 200) // good here 
+0

這與我上面列出的參考文件非常相似。沒有考慮到我的陣列有20萬個URL。 – user1647347

+0

您可以使用multi_curl請求來加速此操作 – Ozerich

+0

您能舉個例子嗎?我認爲這不是一個好的主意,一次multi_curl 20,000。也許你可以把它們分開? – user1647347

0

您可以使用多捲曲請求,但您可能希望一次只限制它們10個。你將不得不跟蹤工作在一個單獨的數據庫進行處理隊列:Threads in PHP

1

我認爲,如果你真的想加快進程,節省了大量的帶寬(因爲我把你打算檢查定期的可用性),那麼你應該工作與插座,不捲曲。您可以在某個時間打開多個套接字併爲每個套接字安排「異步」處理。然後,您需要發送「GET $ sitename/HTTP/1.0 \ r \ n \ r \ n」請求,但不要發送「HEAD $ sitename/HTTP/1.0 \ r \ n \ r \ n」。它將返回與GET請求會返回但沒有響應主體的相同的狀態碼。你只需要解析第一行的答案就可以得到答案,所以你可以用正確的響應代碼regex_match。作爲一種額外的優化,最終你的代碼將會知道哪些站點位於相同的IP上,因此你可以緩存名稱映射並按IP排列列表。然後,您可以通過一個連接的套接字檢查這些站點上的多個站點(請記住添加'Connection:keep-alive'標頭)。

+0

這可能會工作,但似乎過於複雜,我的需要。我只會每週運行這個檢查一次,所以它應該可以捲曲多 – user1647347

+0

這取決於你:)你問的想法 - 你得到他們:) – Serge

+0

這是真的。絕對欣賞輸入:) – user1647347