Нам нужна помощь для кэширования 60se c информации в laravel - PullRequest
0 голосов
/ 30 апреля 2020

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

Пример:

url - domain.com/cats/2 <br>
It's take random from cats.txt file:<br>

Cats 1 - Richy,
Cats 2 - Tom,
Cats 3 - Luka <br>

И я хочу эту информацию кеш 60 секунд, через 60 секунд я снова нажимаю url domain.com/cats/2 и случайная информация из cats.txt new, exampe:

Cats 1 = Justin,
Cats 2 = Edvinas,
Cats 3 = Dzho.

Контроллер: https://pastebin.com/C4eLAYfw

Маршрут: https://pastebin.com/3PuaL82L

Ответы [ 2 ]

0 голосов
/ 30 апреля 2020

Cache::remember отлично подходит для вашего случая использования. Согласно документации;

Иногда вы можете wi sh извлечь элемент из кэша, но также сохранить значение по умолчанию, если запрошенный элемент не существует. Например, вы можете w sh извлечь всех пользователей из кэша или, если они не существуют, извлечь их из базы данных и добавить их в кеш. Вы можете сделать это, используя метод Cache :: Remember

public function index($value)
{
    return Cache::remember('your-cat-key', 1, function () use ($value) {
        return $this->getRandomCats($value);
    });
}

public function getRandomCats($value)
{
    $f_contents = file('cats.txt');
    $line1 = $f_contents[array_rand($f_contents)];
    $line2 = $f_contents[array_rand($f_contents)];
    $line3 = $f_contents[array_rand($f_contents)];
    $Cat1 = $line1;
    $Cat2 = $line2;
    $Cat3 = $line3;

    return compact('Cat1', 'Cat2', 'Cat3');
}
0 голосов
/ 30 апреля 2020

Вы можете использовать Laravel Кэш с драйвером хранилища Redis или аналогичным и просто установить время истечения 60 секунд. См. Laravel документы для Laravel Кэша.

// Set Item in Cache
Cache::put('key', 'value', $seconds);

// Get Item from Cache
$value = Cache::get('key');

// Check Item existence in Cache
if (Cache::has('key')) {
    //
}
...