2014-12-03 25 views
-3

我檢查我的揹包CS的每個項目的價格:去與此鏈接:如何獲得多個價格的項目在市場上的響應

http://steamcommunity.com/market/priceoverview/?country=FR&currency=3&appid=440&market_hash_name=

但對於100項爲例,我檢查100鏈接獲取我所有物品的價格。

是否有可能查詢蒸汽與許多項目和蒸汽反應只有一個JSON與所有價格要求?

我希望它是一個這樣的系統,你發送一個陣列,你想知道價格的所有classid到蒸汽網址,然後蒸汽發送給你一個json和你陣列的所有價格。對於蒸汽來說,這並不困難,而且速度非常快,對我來說這對查詢的速度和容易性都非常有幫助。

+0

你應該檢查他們的文檔。你最好的選擇是製作一個PHP Forloop,然後把所有的json結合在一起。 – DarthCaniac 2014-12-05 20:14:57

+0

他們的文檔中沒有任何內容說到市場......現在這是我所做的,但是每個循環都會打開一個新的URL來獲取價格。 因此,它使一個令人難以置信的長時間 – 2014-12-05 20:18:11

+0

你可以使用CURL來打開URL並解析它們。您應該確保禁用PHP執行時間限制。對於所花費的時間,這不能真正幫助,但也許你可以做一個不錯的加載欄? :) – DarthCaniac 2014-12-05 20:23:52

回答

-2

我覺得

  1. 填充數據到JSON
  2. 然後將它傳遞給特定頁面
  3. 獲取數組中所發佈的商品
  4. 現在使用循環,如:的foreach和查詢每個id或者數據庫中的東西,然後再次將其存儲在數組中
  5. 現在再次使用循環,如果做得好,第4步將是最後一個,以顯示相關定價
0

是否有可能用多個項目查詢蒸汽並且只有一個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&currency=3&appid=730&market_hash_name=Item1' 
     ), 
     array(
     'name' => 'Item2 Response', 
     'url' => 'http://steamcommunity.com/market/priceoverview/?country=ZA&currency=3&appid=730&market_hash_name=Item2' 
     ) 
); 

$curlyItemResponse = curl_get_contents($curlyUrls); 

是絕對不推薦用於100+項此方法。我使用這個功能不超過10次 - 經常性地觸發Steam API可能會導致某些連接不被提及,如果這被稱爲過於頻繁,那麼您的100K每日API閾值將被快速用完。

對此有幾種解決方法,但我可以推薦的最佳方法是將已知項目的列表存儲在數據庫中,並創建一個cronjob以偶爾更新每個項目的價格,同時避免大量的API調用 - 這樣你有一個緩存的價格,每個項目。