Skip to content

DotKernel cache component based on zend-cache, extending and customizing it

License

Notifications You must be signed in to change notification settings

dotkernel/dot-cache

Repository files navigation

dot-cache

Important

dot-cache is a wrapper on top of symfony/cache

OSS Lifecycle

dot-cache badges

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, 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' => \Dot\Cache\Adapter\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.

Configuration example for both in-memory and filesystem adapters

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'     => \Dot\Cache\Adapter\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.