Skip to content

Commit

Permalink
bug #36555 [Cache] skip APCu in chains when the backend is disabled (…
Browse files Browse the repository at this point in the history
…nicolas-grekas)

This PR was merged into the 3.4 branch.

Discussion
----------

[Cache] skip APCu in chains when the backend is disabled

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | Fix #34962
| License       | MIT
| Doc PR        | -

I think this should do it.

Commits
-------

5a72084 [Cache] skip APCu in chains when the backend is disabled
  • Loading branch information
fabpot committed Apr 24, 2020
2 parents ea69f77 + 5a72084 commit 259f523
Show file tree
Hide file tree
Showing 2 changed files with 5 additions and 5 deletions.
7 changes: 2 additions & 5 deletions src/Symfony/Component/Cache/Adapter/AbstractAdapter.php
Expand Up @@ -14,7 +14,6 @@
use Psr\Cache\CacheItemInterface;
use Psr\Log\LoggerAwareInterface;
use Psr\Log\LoggerInterface;
use Psr\Log\NullLogger;
use Symfony\Component\Cache\CacheItem;
use Symfony\Component\Cache\Exception\InvalidArgumentException;
use Symfony\Component\Cache\ResettableInterface;
Expand Down Expand Up @@ -116,14 +115,12 @@ public static function createSystemCache($namespace, $defaultLifetime, $version,
if (null !== $logger) {
$fs->setLogger($logger);
}
if (!self::$apcuSupported) {
if (!self::$apcuSupported || (\in_array(\PHP_SAPI, ['cli', 'phpdbg'], true) && !filter_var(ini_get('apc.enable_cli'), FILTER_VALIDATE_BOOLEAN))) {
return $fs;
}

$apcu = new ApcuAdapter($namespace, (int) $defaultLifetime / 5, $version);
if ('cli' === \PHP_SAPI && !filter_var(ini_get('apc.enable_cli'), FILTER_VALIDATE_BOOLEAN)) {
$apcu->setLogger(new NullLogger());
} elseif (null !== $logger) {
if (null !== $logger) {
$apcu->setLogger($logger);
}

Expand Down
3 changes: 3 additions & 0 deletions src/Symfony/Component/Cache/Adapter/ChainAdapter.php
Expand Up @@ -46,6 +46,9 @@ public function __construct(array $adapters, $defaultLifetime = 0)
if (!$adapter instanceof CacheItemPoolInterface) {
throw new InvalidArgumentException(sprintf('The class "%s" does not implement the "%s" interface.', \get_class($adapter), CacheItemPoolInterface::class));
}
if (\in_array(\PHP_SAPI, ['cli', 'phpdbg'], true) && $adapter instanceof ApcuAdapter && !filter_var(ini_get('apc.enable_cli'), FILTER_VALIDATE_BOOLEAN)) {
continue; // skip putting APCu in the chain when the backend is disabled
}

if ($adapter instanceof AdapterInterface) {
$this->adapters[] = $adapter;
Expand Down

0 comments on commit 259f523

Please sign in to comment.