Допустим у меня cache записывается в файл:
if (Auth::check()) {
Cache::store('file')->put('userIsOnline-' . Auth::user()->id, 'true', now()->addMinutes(1));
}
В самом файле кеша я вижу такую запись:
1553595759s:4:"true";
Так вот, суть моего не понимания:
1) 1553595759s - Время истечения кеша, но после того как истекает время его существования, я обращаюсь по ключу к нему, то мне всё равно выдаётся это значение. Т.е. Мне нужно самому сравнивать время и из этого делать вывод истёк кеш или нет?
2) 4 - что это такое? Во всех файлах кеша это число есть....
3) "true" - где хранится ключ (userIsOnline-{id})? Почему в кеше только значение?
p.s. Laravel 5.7
Весь функционал файлового хранилища кеша Laravel находится здесь: https://github.com/laravel/framework/blob/5.7/src/Illuminate/Cache/FileStore.php
Если вы сохраняете в кеше какое-то значение со сроком хранения 1 минута, то после истечения 1 минуты попытка получить это значение из кеша
Cache::store('file')->get('userIsOnline-' . Auth::user()->id);
Должна закончиться получением null. Самому никаких дополнительных действий производить не нужно. Если вы все же получаете какое-то значение, то, скорее всего, у вас все-таки где-то перед вызовом get(...) вызывается put(...) с интервалом меньше, чем 1 минута.
Ключ в файловом кеше нигде не хранится, при сохранении в кеш ключ сразу хешируется sha1и разбивается на несколько частей, из которых складывается путь к файлу, в который будут записаны данные. Подробнее смотрите метод path().
В сам файл данные записываются в таком виде:
1553595759s:4:"true";
Где 1553595759(10 цифр) - Timestamp окончания времени хранения, а s:4:"true"; - сериализованные данные, хранящиеся в кеше (в вашем случае - результат serialize('true');).
Это результат работы функции serialize()
4 - это количество символов в строке "true"
Продвижение своими сайтами как стратегия роста и независимости