2012-01-16 237 views
1

我們有一個爬行引擎餐飲每月約50萬訪港。我們現在使用curl來獲取網頁。我們最近使用curl的多執行器同時抓取頁面。我們將它設置爲同時抓取20頁。捲曲多抓取問題

現在,在獲取網頁捲曲的過程中,將完全停止,直到所有20頁已被提取,然後纔會移動到下一個20頁。它就像一頁緩慢提取,然後curl將等待爲該頁面加載,直到它進入下一個循環,在該循環中我獲得了下20頁。

是否有任何其他的方式來解決這個?我希望我的問題很清楚。

後來

通過克服我的意思是圖像捲曲同時取20頁。被取出的那些被新的物品瞬間取代以便被取出而無需等待所有20個完成?明確?

+0

所以你正在尋找超時設置? – 2012-01-16 10:21:33

+0

@Pekka - 好的,我會澄清一些問題。 – 2012-01-16 10:33:11

+0

@Pekka:我已經使用'CURLOPT_CONNECTTIMEOUT'和'CURLOPT_TIMEOUT'試過,但一些網頁仍然加載了很長的時間。還沒有調試它還沒有找出問題。 – Ranty 2012-01-16 10:41:32

回答

1

當然,只需添加一個新的手柄有一個新的URL,一旦一個完成。沒有必要先等待所有20個完成。這顯然是低效的。

而且你當然可以凸點20至200或600或任何你想要,而這...

對多接口是如何工作在C級的概述見http://curl.haxx.se/libcurl/c/libcurl-multi.html。 PHP/CURL API只是頂層的一個薄層。

在PHP中,curl_multi_exec()返回時,一個或多個傳輸已經完成了減少「跑手柄」的計數器。您可以(也應該)也可以撥打curl_multi_info_read()來確定完成的傳輸和其單個返回代碼。

+0

我怎麼知道哪一個是完整的?它不會引發任何事件。 – 2012-01-16 12:21:07

+0

我擴展瞭解釋來解決這個問題 – 2012-01-16 12:36:59