dotkernel/dot-cache

DotKernel cache component extending symfony-cache

4.0.0 2024-02-22 18:09 UTC

README

DotKernel cache component based on symfony-cache.

OSS Lifecycle PHP from Packagist (specify version)

GitHub issues GitHub forks GitHub stars GitHub license

Build Static codecov

SymfonyInsight

Note

This package supports only array and filesystem adapters and you can use multiple adapters at once.

Installation

Run the following command in your project directory

composer require dotkernel/dot-cache

After installing, add the Dot\Cache\ConfigProvider::class class to your configuration aggregate.

Configuration for Doctrine in_array

In config\autoload\doctrine.global.php you need to add the following configurations:

Under the doctrine.configuration.orm_default key add the following config:

'result_cache'       => 'array',
'metadata_cache'     => 'array',
'query_cache'        => 'array',
'hydration_cache'    => 'array',
'second_level_cache' => [
    'enabled'                    => true,
    'default_lifetime'           => 3600,
    'default_lock_lifetime'      => 60,
    'file_lock_region_directory' => '',
    'regions'                    => [],
],

Next, under the doctrine key add the following config:

'cache' => [
    'array' => [
        'class'     => \Dot\Cache\Adapter\ArrayAdapter::class,
    ],
],

Note

The above configuration will use an in-memory cache, because you use the array adapter.

If you want to store the cache into files on your local disk you will need to use the filesystem adapter.

CONFIGURATION FOR Doctrine cache using filesystem

The filesystem adapter needs some extra configurations :

  • directory (folder path)
  • namespace (directory name)
'cache' => [
    'array' => [
        'class'     => \Dot\Cache\Adapter\ArrayAdapter::class,
    ],
    'filesystem' => [
        'class'     => \Frontend\App\Common\FilesystemAdapter::class,
        'directory' => getcwd() . '/data/cache',
        'namespace' => 'doctrine',
    ],
],

You can store result_cache, metadata_cache, query_cache, hydration_cache into files using the filesystem adapter or you can store the result_cache into memory using the array adapter.

EXAMPLE OF CONFIGURATION WHICH USE BOTH in_memory AND filesystem

Configuration sample for config\autoload\doctrine.global.php file:

return [
    'dependencies'        => [
        'factories' => [
            \Dot\Cache\Adapter\FilesystemAdapter::class => \Dot\Cache\Factory\FilesystemAdapterFactory::class,
        'aliases'   => [
            \Symfony\Component\Cache\Adapter\FilesystemAdapter::class => \Dot\Cache\Adapter\FilesystemAdapter::class
        ],
    ],
    'doctrine'            => [
        'configuration' => [
            'orm_default' => [
                'result_cache'       => 'array',
                'metadata_cache'     => 'array',
                'query_cache'        => 'filesystem',
                'hydration_cache'    => 'array',
                'second_level_cache' => [
                    'enabled'                    => true,
                    'default_lifetime'           => 3600,
                    'default_lock_lifetime'      => 60,
                    'file_lock_region_directory' => '',
                    'regions'                    => [],
                ],
            ],
        ],
        'cache'      => [
            'array' => [
                'class'     => \Symfony\Component\Cache\Adapter\ArrayAdapter::class,
            ],
            'filesystem' => [
                'class'     => \Frontend\App\Common\FilesystemAdapter::class,
                'directory' => getcwd() . '/data/cache',
                'namespace' => 'doctrine',
            ],
        ],
    ],
];

NOTE

The above configuration is just a sample, it should not be used as it is.

You can enable/disable the caching system using the doctrine.configuration.orm_default.second_level_cache.enabled key.