Я не могу объяснить, почему ваш файл исчезает, я думаю, что чего-то не хватает в вашем образце, который, вероятно, удаляет файл кэша.Однако у меня может быть несколько заметок, которые могут вам помочь ...
Я думаю, что вы неправильно интерпретируете параметр automatic_cleaning_factor
.Это не отключает срок действия вашего кэша.Это отключает только внешний интерфейс кэша от автоматической очистки любого кэша, срок действия которого мог истечь при вызове метода save()
.
Когда вы load()
ваш кэш, он все еще проверяется на достоверность,и если он недействителен, он игнорируется, и ваша база данных будет запрашиваться на наличие свежих данных.Вы можете передать true
в качестве второго параметра в load()
, чтобы проигнорировать проверку достоверности.
Однако вам, вероятно, следует просто установить lifetime
на очень долгое время вместопереопределение проверки кэша, потому что она существует по определенной причине.
Кроме того, этот код можно упростить:
if(!$result = $cache->load('test_blah')) {
// run SQL
...
$cache->save($my_array_from_db, 'test_blah');
} else {
$result = $cache->load('test_blah');
}
Кому:
if(!$result = $cache->load('test_blah')) {
// run SQL
...
$result = $my_array_from_db;
$cache->save($result, 'test_blah');
}
else
не требуется, поскольку $result
из вашего кэша назначается в операторе if()
.