Intereting Posts
PHP в HTML-странице, Super Quick Advice Как сохранить строку, введенную в HTML-форму, в текстовый файл запросить файл XML с помощью PHP почему PHP hash_hmac ('sha256') дает отличный результат, чем java sha256_HMAC Выполнение необработанного SQL с помощью Doctrine 2 Разница версий для strtotime («первый день прошлого месяца»)? Как выбрать из динамического столбца через переменную с PDO? Оценить перенаправление PHP 404, связанное с неверным запросом на получение PHP + MySQL: разница между буферизированными и небуферизованными запросами Что такое подходящий заголовок типа контента для файлов JavaScript? Могу ли я изменить функцию CodeIgniter show_error, чтобы вернуть объект JSON? Сортировка массива несколькими ключами в определенном порядке Получение токена Cognos Codeigniter без формы? Создание поля электронной почты в php Невозможно использовать pastebin с помощью curl в командной строке: неверный запрос API, неверный api_option

Как получить ответ на несколько пунктов цены на рынке

Я проверяю цену каждого предмета моего рюкзака cs: перейдите по этой ссылке:

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

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

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

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

Solutions Collecting From Web of "Как получить ответ на несколько пунктов цены на рынке"

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

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

Пример curl multi 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 – таким образом, у вас есть кешированный цена на каждый товар.

я думаю

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