8000 [FrameworkBundle] Default to Apcu+Filesystem cache chain · symfony/symfony@575b359 · GitHub
[go: up one dir, main page]

Skip to content

Commit 575b359

Browse files
[FrameworkBundle] Default to Apcu+Filesystem cache chain
1 parent b85ab60 commit 575b359

File tree

7 files changed

+45
-45
lines changed

7 files changed

+45
-45
lines changed

UPGRADE-3.1.md

Lines changed: 2 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -93,25 +93,8 @@ FrameworkBundle
9393
cache service. If you are using `serializer.mapping.cache.apc`, use
9494
`serializer.mapping.cache.doctrine.apc` instead.
9595

96-
* The `framework.serializer.cache` option has been deprecated. Configure the
97-
`cache.serializer` service under `framework.cache.pools` instead.
98-
99-
Before:
100-
101-
```yaml
102-
framework:
103-
serializer:
104-
cache: serializer.mapping.cache.apc
105-
```
106-
107-
After:
108-
109-
```yaml
110-
framework:
111-
cache:
112-
pools:
113-
cache.serializer:
114-
adapter: cache.adapter.apcu
96+
* The `framework.serializer.cache` option has been deprecated. APCu should now
97+
be automatically used when available so you can remove this configuration key.
11598

11699
HttpKernel
117100
----------

UPGRADE-4.0.md

Lines changed: 2 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -80,26 +80,8 @@ FrameworkBundle
8080
* The service `serializer.mapping.cache.apc` has been removed; use
8181
`serializer.mapping.cache.doctrine.apc` instead.
8282

83-
* The `framework.serializer.cache` option has been removed. Configure the
84-
`cache.serializer` service under `framework.cache.pools` instead.
85-
86-
Before:
87-
88-
```yaml
89-
framework:
90-
serializer:
91-
cache: serializer.mapping.cache.apc
92-
```
93-
94-
After:
95-
96-
```yaml
97-
framework:
98-
cache:
99-
pools:
100-
cache.serializer:
101-
adapter: cache.adapter.apcu
102-
```
83+
* The `framework.serializer.cache` option has been removed. APCu should now
84+
be automatically used when available so you can remove this configuration key.
10385

10486
HttpKernel
10587
----------

src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Configuration.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -560,11 +560,11 @@ private function addCacheSection(ArrayNodeDefinition $rootNode)
560560
->children()
561561
->scalarNode('app')
562562
->info('App related cache pools configuration')
563-
->defaultValue('cache.adapter.filesystem')
563+
->defaultValue('cache.adapter.default')
564564
->end()
565565
->scalarNode('system')
566566
->info('System related cache pools configuration')
567-
->defaultValue('cache.adapter.filesystem')
567+
->defaultValue('cache.adapter.default')
568568
->end()
569569
->scalarNode('directory')->defaultValue('%kernel.cache_dir%/pools')->end()
570570
->scalarNode('default_doctrine_provider')->end()

src/Symfony/Bundle/FrameworkBundle/Resources/config/cache.xml

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,11 @@
66

77
<services>
88

9-
<service id="cache.app" parent="cache.adapter.filesystem">
9+
<service id="cache.app" parent="cache.adapter.default">
1010
<tag name="cache.pool" />
1111
</service>
1212

13-
<service id="cache.system" parent="cache.adapter.filesystem">
13+
<service id="cache.system" parent="cache.adapter.default">
1414
<tag name="cache.pool" />
1515
</service>
1616

@@ -22,6 +22,16 @@
2222
<tag name="cache.pool" />
2323
</service>
2424

25+
<service id="cache.adapter.default" class="Symfony\Component\Cache\Adapter\ChainAdapter" abstract="true">
26+
<factory class="Symfony\Component\Cache\Adapter\AbstractAdapter" method="createDefault" />
27+
<tag name="cache.pool" clearer="cache.default_clearer" />
28+
<tag name="monolog.logger" channel="cache" />
29+
<argument /> <!-- namespace -->
30+
<argument /> <!-- default lifetime -->
31+
<argument>%kernel.cache_dir%/pools</argument>
32+
<argument type="service" id="logger" on-invalid="ignore" />
33+
</service>
34+
2535
<service id="cache.adapter.apcu" class="Symfony\Component\Cache\Adapter\ApcuAdapter" abstract="true">
2636
<tag name="cache.pool" clearer="cache.default_clearer" />
2737
<tag name="monolog.logger" channel="cache" />

src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/ConfigurationTest.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -268,8 +268,8 @@ protected static function getBundleDefaultConfig()
268268
),
269269
'cache' => array(
270270
'pools' => array(),
271-
'app' => 'cache.adapter.filesystem',
272-
'system' => 'cache.adapter.filesystem',
271+
'app' => 'cache.adapter.default',
272+
'system' => 'cache.adapter.default',
273273
'directory' => '%kernel.cache_dir%/pools',
274274
'default_redis_provider' => 'redis://localhost',
275275
),

src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/FrameworkExtensionTest.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
use Symfony\Bundle\FrameworkBundle\Tests\TestCase;
1515
use Symfony\Bundle\ 10000 FrameworkBundle\DependencyInjection\FrameworkExtension;
1616
use Symfony\Component\Cache\Adapter\ApcuAdapter;
17+
use Symfony\Component\Cache\Adapter\ChainAdapter;
1718
use Symfony\Component\Cache\Adapter\DoctrineAdapter;
1819
use Symfony\Component\Cache\Adapter\FilesystemAdapter;
1920
use Symfony\Component\Cache\Adapter\ProxyAdapter;
@@ -728,6 +729,9 @@ private function assertCachePoolServiceDefinitionIsCreated(ContainerBuilder $con
728729
$this->assertSame(DoctrineAdapter::class, $parentDefinition->getClass());
729730
break;
730731
case 'cache.app':
732+
if (ChainAdapter::class === $parentDefinition->getClass()) {
733+
break;
734+
}
731735
case 'cache.adapter.filesystem':
732736
$this->assertSame(FilesystemAdapter::class, $parentDefinition->getClass());
733737
break;

src/Symfony/Component/Cache/Adapter/AbstractAdapter.php

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,9 @@
1414
use Psr\Cache\CacheItemInterface;
1515
use Psr\Log\LoggerAwareInterface;
1616
use Psr\Log\LoggerAwareTrait;
17+
use Psr\Log\LoggerInterface;
1718
use Symfony\Component\Cache\CacheItem;
19+
use Symfony\Component\Cache\Exception\CacheException;
1820

1921
/**
2022
* @author Nicolas Grekas <p@tchwork.com>
@@ -67,6 +69,25 @@ function ($deferred, $namespace, &$expiredIds) {
6769
);
6870
}
6971

72+
public static function createDefault($namespace = '', $defaultLifetime = 0, $directory = null, LoggerInterface $logger = null)
73+
{
74+
$fs = new FilesystemAdapter($namespace, $defaultLifetime, $directory);
75+
if (null !== $logger) {
76+
$fs->setLogger($logger);
77+
}
78+
79+
try {
80+
$apcu = new ApcuAdapter($namespace, $defaultLifetime / 5);
81+
if (null !== $logger) {
82+
$apcu->setLogger($logger);
83+
}
84+
85+
return new ChainAdapter(array($apcu, $fs));
86+
} catch (CacheException $e) {
87+
return $fs;
88+
}
89+
}
90+
7091
/**
7192
* Fetches several cache items.
7293
*

0 commit comments

Comments
 (0)
0