Адаптер кеша PHP-файлов

Дата обновления перевода 2023-08-17*

Адаптер кеша PHP-файлов

Схоже с адаптером 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().