2014-12-03 1 views
-3

я проверить цену каждой детали моего рюкзака сСт: перейти по этой ссылке:Как получить ответ на нескольких пунктов цен на рынке

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

Но на 100 пунктов для Exemple, я проверить 100 ссылки для получения цены на все мои товары.

Можно ли запросить пар с множеством элементов и отклик на пар только один json со всеми запрошенными ценами?

Я хочу, чтобы это была такая система, вы отправляете массив со всеми классифицированными предметами, которые хотите знать, цена на парол, и пара посылает вам один json со всей ценой вашего массива. Для пара это не сложно, и это очень быстро, и для меня это очень помогает в скорости запроса и проще.

+0

Вы должны проверить их документацию. Лучше всего было бы сделать PHP Forloop, а затем объединить все json вместе. – DarthCaniac

+0

В их документе нет ничего, что говорит о рынке ... На данный момент это то, что я сделал, но каждый цикл открывает новый URL-адрес для получения цены. Так что это делает невероятно долгое время –

+0

Вы можете использовать CURL, чтобы открыть URL-адреса и проанализировать их. Вы должны отключить ограничения времени выполнения PHP. За потраченное время это не может помочь, но, может быть, вы можете сделать хороший загрузочный бар? :) – DarthCaniac

ответ

-2

Я думаю

  1. заполнения данных в формате JSON
  2. затем передать его на конкретную страницу
  3. Получить опубликованную позицию в массиве
  4. теперь использовать цикл вроде: Еогеасп и запрашивать каждый id или что-то в базе данных, а затем снова сохранить его в массиве
  5. теперь снова использовать цикл, если все сделано хорошо, шаг 4 будет последним, чтобы отобразить связанные цены
0

Можно ли запросить пар с множеством элементов и отклик на пар только один json со всеми запрошенными ценами?

Нет, это не возможно запросить стим большое количество элементов, которые в результате одной реакции со всеми данными, однако можно использовать MultiGet CURL для отправки нескольких запросов, которые каждый удар парового API, возвращающих несколько отклик в один вызов cURL.

Пример скручивание нескольких Exec:

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 вызовов - слишком часто нажимаю на API Steam, что может привести к некоторому дросселированию к вашему соединению, если не упоминаться, если это вызвано слишком часто, ваш порог API 100K ежедневно будет довольно быстро истощаться.

Существует несколько обходных путей для этого, но лучший подход, который я могу порекомендовать, - это хранить список ваших известных элементов в базе данных и создавать cronjob, чтобы иногда обновлять цены на каждый элемент, избегая массовых вызовов API - таким образом у вас есть кешированная цена для каждого элемента.

Смежные вопросы