2012-05-08 71 views
3

我想索引許多網頁的hundrets。CURL失敗後,許多運行說「無法建立連接」或「連接()超時」

在短期

  1. 使用一個cron作業
  2. 獲取一些(大約只有15)最少最近更新的URL
  3. 查詢論文網址使用curl調用PHP腳本

問題

在開發中一切都很順利。但是當我開始索引更多的測試頁時,CURL在一些運行後拒絕工作。它不會從遠程服務器獲取任何數據。

錯誤消息

這些錯誤CURL已打印出來(當然不是在一次)

  1. 無法連接到主機
  2. 操作超時後60000毫秒與0字節接收

我正在使用V-Server,並嘗試使用Firefox或wget連接到遠程服務器。也沒什麼。但是,從本地機器連接到該遠程服務器時,一切正常。

等待幾個小時,它再次適用於一些運行。

對我來說,它似乎是一個遠程服務器或DDOS保護或類似的問題,你們怎麼看?

+0

也查看http錯誤代碼 –

+0

發生故障時,http狀態代碼始終爲0 – Robert

+0

通過wget/FF連接與從本地計算機進行連接有什麼意義?有什麼不同? – petr

回答

1

當您發送太多的請求時,您應該使用代理服務器,因爲您的IP可以被網站阻止他們的DDOS保護或類似的設置。

這裏有出頭要注意:(我用什麼刮的網站DATAS)

1.使用代理服務器。

2.使用隨機用戶代理

3.Random查閱情況

4.Random延遲crons。

5.Random請求之間的延遲。

我會做的是讓腳本永遠運行,並在兩者之間增加睡眠。

ignore_user_abort(1); 
set_time_limit(0); 

只要觸發它與訪問一秒的網址,它將永遠運行。

1

腳本運行的頻率如何?它確實可能會觸發一些類似DOS的保護。我建議實施一些隨機延遲,以使請求看起來延遲一段時間,以使它們看起來更「自然」

+0

腳本每分鐘運行一次,我已將其更改爲5分鐘。每運行一次,它就會發送5到20個請求。 – Robert

+0

我實現了一個延遲:每次請求之間隨機地從1秒到5秒。你認爲,這太少了? – Robert

+0

看起來很好 - 每5分鐘有20個請求應該沒問題 – petr

相關問題