我寫了一個腳本,從網站下載頁面列表。我不時收到以下錯誤(秒數是可變的):bwshare模塊和PHP抓取
bwshare模塊將拒絕您的請求在接下來的7秒。 您已經下載過快的數據。
我發現當在循環中使用睡眠(2)時,它工作得更好,但是時間延遲太昂貴。 如何處理這個模塊的最佳方式是什麼?我是否應該毫不拖延地刮掉它,並且如果響應與上述消息類似,只需使用sleep達到所需的秒數?
我寫了一個腳本,從網站下載頁面列表。我不時收到以下錯誤(秒數是可變的):bwshare模塊和PHP抓取
bwshare模塊將拒絕您的請求在接下來的7秒。 您已經下載過快的數據。
我發現當在循環中使用睡眠(2)時,它工作得更好,但是時間延遲太昂貴。 如何處理這個模塊的最佳方式是什麼?我是否應該毫不拖延地刮掉它,並且如果響應與上述消息類似,只需使用sleep達到所需的秒數?
這一切都取決於在錯誤消息之前可以獲得多少頁。
嘗試並測量您可以獲得的平均頁數。
bwshare訊息前最少4頁。
如果您收到錯誤消息達到4個下載之前,那麼金正日將更快每次下載後進入休眠狀態(2)。
它通常在10-15頁左右 – user965748
然後,正如我所說的,當你收到bwshare錯誤信息時,只是睡覺(7)。你會得到更多的表現。否則,獲得30頁將花費你1分鐘,而不是僅僅14秒! –
我也想用cURL登錄,因爲它可能會阻止這種情況發生。 – user965748
試試這種方式...它可能會幫助你。
$requestTime = 0.1; // s/connection
foreach(/* blah */) {
$start = microtime(true);
// Do your stuff to here.. get_file_content($url) and other processing .........
if($timeTaken = microtime(true)-$start < $requestTime) {
usleep(($requestTime-$timeTaken)*1000000);
}
}
,如果你的問題就解決了,然後嘗試後你的答案讓其他人也可受益
我們想知道您是如何克服性能問題的......並且您發現在睡眠(n)中有效使用了哪些值? –
由於速度在項目中是必需的,我決定放棄這一點,並採用完全不同的方式。 – user965748
是的,你需要睡抓住設置爲7秒,或者使用多臺計算機(多個IP) – Sergey