是否有可能用多個項目查詢蒸汽並且只有一個json滿足所有價格要求?
不,這是不可能的查詢蒸汽具有導致所有數據的單一響應許多項目,但它有可能使用捲曲的Multiget的發送多個請求,每個擊中蒸汽API返回的多重響應單個捲曲電話。捲曲多高管的
例子:
function curl_get_contents($data) {
$curly = array();
$mh = curl_multi_init();
foreach ($data as $urlArray) {
$curly[$urlArray['name']] = curl_init();
curl_setopt($curly[$urlArray['name']], CURLOPT_URL, $urlArray['url']);
curl_setopt($curly[$urlArray['name']], CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curly[$urlArray['name']], CURLOPT_HEADER, false);
curl_setopt($curly[$urlArray['name']], CURLOPT_RETURNTRANSFER, true);
curl_multi_add_handle($mh, $curly[$urlArray['name']]);
}
$running = null;
do {
curl_multi_exec($mh, $running);
} while ($running > 0);
foreach ($curly as $id => $c) {
curl_multi_remove_handle($mh, $c);
}
curl_multi_close($mh);
}
我寫了一個函數很多像這樣的(除去額外的代碼,因爲我不希望你把剛纔複製/麪食做的 - 而不是學習)取一個陣列的陣列,其中每個陣列內包含一個名稱和一個URL,並相應地返回數據的陣列 - 例如:
$curlyUrls = array(
array(
'name' => 'Item1 Response',
'url' => 'http://steamcommunity.com/market/priceoverview/?country=ZA¤cy=3&appid=730&market_hash_name=Item1'
),
array(
'name' => 'Item2 Response',
'url' => 'http://steamcommunity.com/market/priceoverview/?country=ZA¤cy=3&appid=730&market_hash_name=Item2'
)
);
$curlyItemResponse = curl_get_contents($curlyUrls);
是絕對不推薦用於100+項此方法。我使用這個功能不超過10次 - 經常性地觸發Steam API可能會導致某些連接不被提及,如果這被稱爲過於頻繁,那麼您的100K每日API閾值將被快速用完。
對此有幾種解決方法,但我可以推薦的最佳方法是將已知項目的列表存儲在數據庫中,並創建一個cronjob以偶爾更新每個項目的價格,同時避免大量的API調用 - 這樣你有一個緩存的價格,每個項目。
來源
2014-12-24 19:55:30
snh
你應該檢查他們的文檔。你最好的選擇是製作一個PHP Forloop,然後把所有的json結合在一起。 – DarthCaniac 2014-12-05 20:14:57
他們的文檔中沒有任何內容說到市場......現在這是我所做的,但是每個循環都會打開一個新的URL來獲取價格。 因此,它使一個令人難以置信的長時間 – 2014-12-05 20:18:11
你可以使用CURL來打開URL並解析它們。您應該確保禁用PHP執行時間限制。對於所花費的時間,這不能真正幫助,但也許你可以做一個不錯的加載欄? :) – DarthCaniac 2014-12-05 20:23:52