Laravel кеш переменной - PullRequest
       0

Laravel кеш переменной

1 голос
/ 06 марта 2020

Мне нужно кэшировать результаты синтаксического анализа Steam API. И так кешированный результат длится 15 минут. У меня есть код:

public function load()
    {
        if (Auth::guest()) return response()->json(['success' => false, 'msg' => 'You need login!']);

        $inventory = $this->getInventory(file_get_contents('http://steamcommunity.com/inventory/' . $this->user->steamid64 . '/570/2?l=russian&count=5000', true));

        if (!$inventory) {
            return response()->json(['success' => false, 'msg' => 'Error']);
        }

        $items = [];

        $items_with_prices = json_decode(\Storage::get('prices.txt'));

        $items_with_prices_by_key = [];

        foreach ($items_with_prices->items as $item_price_key => $item_price_data) {
            $items_with_prices_by_key[$item_price_key] = $item_price_data->price;
        }

        foreach ($inventory['rgInventory'] as $info) {
            $item = $inventory['rgDescriptions'][$info['classid'] . '_' . $info['instanceid']];
            if ($item['tradable'] == 0) continue;

            $price = 0;//InventoryController::getItemPrice($item['market_hash_name']);
            if (array_key_exists($item['market_hash_name'], $items_with_prices_by_key)) {
                $price = $items_with_prices_by_key[$item['market_hash_name']];
            }
            if (!$price) continue;

            if ($price < 1) $price = 0.64;

            $type = $this->getType($item['type']);

            $items[] = [
                'id' => $info['id'],
                'classid' => $item['icon_url'],
                'price' => round($price, 2),
                'type' => $type
            ];
        }

        usort($items, function($a, $b){
            return ($b['price'] - $a['price']);
        });

        return response()->json(['success' => true, 'items' => $items]);
    }

Этот код работает только тогда, когда пользователь сайта нажимает кнопку «показать мои элементы» и в список элементов пользователя в Steam Dota 2 отправляется запрос. Теперь, если нажмите Чтобы постоянно получать список элементов, Steam может заблокировать IP-адрес сервера на 24 часа. Насколько я понимаю, мне нужно выбросить результат переменной $inventory в кеш. Я создаю таблицу базы данных cache с полями id, user_id, items, date.

Как теперь я могу кэшировать результат из переменной $inventory продолжительностью 15 минут?

1 Ответ

0 голосов
/ 06 марта 2020

Вот основные c кэширование в laravel


$rememberTimeInSeconds = 3600;
$cachedResult = Cache::remember('name_of_your_cache', $rememberTimeInSeconds, function(){

// It can be any logic I just showing a simple query.
$users = User::all();

return $users;

});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...