2014-12-07 38 views
1

我需要調用Steam市場API超過10000請求所有項目的價格。我想將它們保存在我的MySQL數據庫中。但我的要求總是崩潰。有沒有什麼辦法可以調用太多請求的API?如何使用PHP或JavaScript請求Steam API超過10000次?

file_get_contents("http://steamcommunity.com/market/priceoverview/?country=US&currency=1&appid=570&market_hash_name=$marketHashName") 

例子:

http://steamcommunity.com/market/priceoverview/?country=US&currency=1&appid=570&market_hash_name=Dragonclaw%20Hook

+5

10,000個請求是10,000個請求,除非你能找到一些方法來避免這麼多(比如某種批量API;試着檢查一個存在的API),這將會是很多請求,無論如何你如何削減它。如果事實證明您確實需要這些10,000個請求,那麼您可能會開始在每個請求之間添加延遲並將整個流程置於後臺。 – icktoofay 2014-12-07 06:40:03

+0

你應該增加你php的最大執行時間,因爲無論你的服務器有多快,10000個請求都會花費一些好時間。 – 2014-12-07 06:45:31

+0

「請求總是崩潰」。你能更具體一點嗎? – halfer 2014-12-07 09:42:23

回答

1

你基本上需要你的要求分成通過不同IP地址的多個請求,而不是1個IP發送10,000個請求。例如,應該是10個IP在每個請求之間發送1000個約500ms的請求。否則蒸汽/ Akamai將只是禁止你的IP進行洪水或ddos嘗試。再次,10,000個請求是很多請求,您將需要更好/更多的基礎設施,甚至試圖有效地做到這一點。

4

Steam API限制爲100,000 requests per day - 無論一天是在24小時內還是基於日曆日都不完全清楚。過去,我從同一個IP地址發出數千個請求,沒有任何問題。

您是否收到403響應碼?如果是這樣,你可能會達到費率限制。如果使用多個IP地址將有所幫助,我也會感到驚訝,因爲速率限制可能與您的API密鑰相關聯。

0

我知道這是一個古老的問題,但由於我正在做一些研究,包括蒸汽工作,我想這可能會幫助一些人。

首先,我們處理大量請求的方式是啓動(在您的情況下爲10,000個)調用請求並使用數據的進程 - 延遲100ms,否則我們的數據庫將無法完成所有命令,它會混淆保存的數據。我不知道你是否可以毫不拖延地發送所有這些請求。

其次,限制每個日曆天。您可以在一天內發送100,000個請求,並從午夜開始發送100,000個請求。

另一點是,我不知道發送超過100,000個請求時會發生什麼。所以要小心。

1

正如您在the Steam Web API Documentation的列表中所看到的,您沒有使用您需要Web API密鑰的API。因此,您的要求不限於每天10萬次,而是每10秒鐘約10次。您可以每秒發送一次請求,或者一次發送10個請求,並等待10秒鐘。