Адаптер кешу файлів PHP

Дата оновлення перекладу 2023-08-17

Адаптер кешу файлів 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 обробляє включення файлів, цей адаптер може бути набагато швидшим, ніж інші кеші на основі файлової системи.

Caution

Хоча він підтримує оновлення і використовує 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().