Адаптер кешу файлів PHP
Дата оновлення перекладу 2025-01-10
Адаптер кешу файлів PHP
Схоже з адаптером Filesystem, ця
реалізація кешу записує записи кешу на диск, але на відміну від адаптера кешу Filesystem,
адаптер кешу файлів PHP записує і зчитує ці файли кешу як нативний PHP-код. Наприклад,
кешування значення ['my', 'cached', 'array']
призведе до створення файлу кешу, подібного
до наступного:
1 2 3 4 5 6 7 8 9 10 11 12 13
<?php return [
// час завершення строку дії кешу
0 => 9223372036854775807,
// зміст елементів кешу
1 => [
0 => 'my',
1 => 'cached',
2 => 'array',
],
];
Note
Цей адаптер вимагає ввімкнення параметра opcache.enable
php.ini.
Оскільки елементи кешу включаються і розбираються як нативний PHP-код, а також завдяки тому,
як OPcache обробляє включення файлів, цей адаптер може бути набагато швидшим, ніж інші
кеші на основі файлової системи.
Warning
Хоча він підтримує оновлення і використовує OPcache як бекенд, цей адаптер краще підходить для потреб лише додавання. Використання його в інших сценаріях може призвести до періодичного скидання пам'яті OPcache, що потенційно може призвести до погіршення продуктивності.
PhpFilesAdapter можна за бажанням надати простір імен, час життя кешу за замовчуванням та шлях каталогу кешу в якості аргументів конструктора:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
use Symfony\Component\Cache\Adapter\PhpFilesAdapter;
$cache = new PhpFilesAdapter(
// рядок, використовуваний як підкаталог кореневого каталогу кешу, де будуть
// зберігатися елементи кешу
$namespace = '',
// час життя за замовчуванням (в секундах) для елементів кешу, які не визначають власний
// час життя, де значення 0 призведе до нескінченного зберігання елементів (тобто, допоки
// файли не будуть видалені)
$defaultLifetime = 0,
// головний каталог кешу (додатку потрібні дозволи читання та запису в ньому)
// якщо не вказано, каталог створюється всередині тимчасового каталогу системи
$directory = null
);
Note
Цей адаптер реалізує PruneableInterface, що дозволяє
вручну обрізти застарілі записи кешу , шляхом виклику
його методу prune()
.