За последние 24 часа нас посетили 22116 программистов и 1055 роботов. Сейчас ищут 729 программистов ...

Помогите разобраться...С функцией.

Тема в разделе "Сделайте за меня", создана пользователем KasperZzz, 10 авг 2017.

  1. KasperZzz

    KasperZzz Активный пользователь

    С нами с:
    3 янв 2010
    Сообщения:
    46
    Симпатии:
    4
    У меня функция которая выбирает предмет, повторно только после того как пройдет 2 минуты(Засекал)
    Что не так с кодом? Почему 2 минуты тайминг?Или в функции все ок и проблема где то в другой части кода?(Я предполагал, что каким то образом функция хэшируется и из-за это не выбирается новый предмет)
    Помогите хоть предположениями.
    (Функция, как я понимаю, должна выбирать предметы и фильтруя их выдавать один.)



    PHP:
    1. function getSteamInventory($id, $items){
    2.  
    3.     global $Functions;
    4.  
    5.     $json = json_decode(file_get_contents("http://steamcommunity.com/id/".$id."/inventory/json/730/2?l=russian"),true);
    6.  
    7.     if(isset($json['rgDescriptions'])){
    8.         $new = [];
    9.         foreach($json['rgDescriptions'] as $key => $botInv){
    10.             foreach($items as $i){
    11.              
    12.                 $str = $i['weapon'].' | '.$i['name'];
    13.                 if(strpos($botInv['market_hash_name'], $str) !== false || strpos($botInv['name'], $str) !== false){
    14.                     if(strpos($botInv['market_hash_name'], "StatTrak™") !== false){
    15.                         $i['stattrak'] = "true";
    16.                     }else{
    17.                         $i['stattrak'] = "false";
    18.                     }
    19.                     $i['market_hash_name'] = $botInv['market_hash_name'];
    20.                     $i['inventory_id'] = $key;
    21.                     foreach($json['rgInventory'] as $rgInv){
    22.                         if($rgInv['classid'] == $botInv['classid'] && $rgInv['instanceid'] == $botInv['instanceid']){
    23.                             $i['weaponid'] = $rgInv['id'];
    24.                             break;
    25.                         }
    26.                     }
    27.                     $checkDrop = $Functions->db->query("SELECT * FROM drops WHERE inventoryid = '".$key."' ORDER BY id DESC LIMIT 1");
    28.                     if($checkDrop->num_rows !== 0){
    29.                         $checkDrop = $checkDrop->fetch_object();
    30.                         if($checkDrop->status == 2){
    31.                             $new[] = $i;
    32.                         }else{
    33.                             continue;
    34.                         }
    35.                     }else{
    36.                         $new[] = $i;
    37.                     }
    38.                 }
    39.             }
    40.         }
    41.         if(count($new) == 0){
    42.             return false;
    43.         }else{
    44.             return $new; //  предмет, как я полагаю?
    45.         }
    46.     }else{
    47.      
    48.      
    49. return false;
    50.     }
     
  2. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.751
    Симпатии:
    1.322
    Адрес:
    Лень
    надо тестировать. просто глазами поводил на код особо ничего не понял
     
  3. KasperZzz

    KasperZzz Активный пользователь

    С нами с:
    3 янв 2010
    Сообщения:
    46
    Симпатии:
    4
    А связаться с вами можно? За символическую сумму поможете? Если протестируем
     
  4. KasperZzz

    KasperZzz Активный пользователь

    С нами с:
    3 янв 2010
    Сообщения:
    46
    Симпатии:
    4
    Больше никто не поможет?
    --- Добавлено ---
    Кстати, написан код под php5. У меня сейчас php7. Может в этом проблема?
     
  5. Maputo

    Maputo Активный пользователь

    С нами с:
    30 июл 2015
    Сообщения:
    1.136
    Симпатии:
    173
    А то что на steamcommunity может стоять ограничение в 2 минуты не вариант?
    Попробуйте запросы в адресной строке браузера.
    Первые 3 раза с произвольным id дает json (в ответе ошибка "Error":"Этот профиль скрыт."), а потом в течении 2х минут null
     
    #5 Maputo, 11 авг 2017
    Последнее редактирование: 11 авг 2017
    KasperZzz нравится это.
  6. KasperZzz

    KasperZzz Активный пользователь

    С нами с:
    3 янв 2010
    Сообщения:
    46
    Симпатии:
    4
    Я предполагал, что такое возможно.Проверял в строке браузера, но сейчас подумал, мб у меня браузер хэширует...
     
  7. KasperZzz

    KasperZzz Активный пользователь

    С нами с:
    3 янв 2010
    Сообщения:
    46
    Симпатии:
    4
    Да, хэширует! Спасибо тебе!
     
  8. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.902
    Симпатии:
    969
    @KasperZzz Кэширует. Хэш немного отличается от кэша.
     
  9. AlexProg

    AlexProg Активный пользователь

    С нами с:
    13 май 2014
    Сообщения:
    320
    Симпатии:
    7
    Может из-за file_get_contents и плюс цикл в цикле?
    + сервер отдает с задержкой