From 7212326d59d0d40dc81e3ce8a5bd146bc1cf6be4 Mon Sep 17 00:00:00 2001 From: David Grudl Date: Mon, 18 Jul 2016 11:00:06 +0200 Subject: [PATCH] SQLiteJournal: checking for extension pdo_sqlite is lazy, service cache.journal is created always --- composer.json | 3 +++ src/Bridges/CacheDI/CacheExtension.php | 12 ++++-------- src/Caching/Storages/SQLiteJournal.php | 7 ++++--- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/composer.json b/composer.json index 642dd61b..906aa3f2 100644 --- a/composer.json +++ b/composer.json @@ -24,6 +24,9 @@ "latte/latte": "~2.4", "tracy/tracy": "^2.4" }, + "suggest": { + "ext-pdo_sqlite": "to use SQLiteStorage or SQLiteJournal" + }, "conflict": { "nette/nette": "<2.2" }, diff --git a/src/Bridges/CacheDI/CacheExtension.php b/src/Bridges/CacheDI/CacheExtension.php index f3d14bc9..eed4ff20 100644 --- a/src/Bridges/CacheDI/CacheExtension.php +++ b/src/Bridges/CacheDI/CacheExtension.php @@ -29,20 +29,16 @@ public function loadConfiguration() { $builder = $this->getContainerBuilder(); - if (extension_loaded('pdo_sqlite')) { - $builder->addDefinition($this->prefix('journal')) - ->setClass(Nette\Caching\Storages\IJournal::class) - ->setFactory(Nette\Caching\Storages\SQLiteJournal::class, [$this->tempDir . '/cache/journal.s3db']); - } + $builder->addDefinition($this->prefix('journal')) + ->setClass(Nette\Caching\Storages\IJournal::class) + ->setFactory(Nette\Caching\Storages\SQLiteJournal::class, [$this->tempDir . '/cache/journal.s3db']); $builder->addDefinition($this->prefix('storage')) ->setClass(Nette\Caching\IStorage::class) ->setFactory(Nette\Caching\Storages\FileStorage::class, [$this->tempDir . '/cache']); if ($this->name === 'cache') { - if (extension_loaded('pdo_sqlite')) { - $builder->addAlias('nette.cacheJournal', $this->prefix('journal')); - } + $builder->addAlias('nette.cacheJournal', $this->prefix('journal')); $builder->addAlias('cacheStorage', $this->prefix('storage')); } } diff --git a/src/Caching/Storages/SQLiteJournal.php b/src/Caching/Storages/SQLiteJournal.php index 30ab17fc..e3a3a0d0 100644 --- a/src/Caching/Storages/SQLiteJournal.php +++ b/src/Caching/Storages/SQLiteJournal.php @@ -30,15 +30,16 @@ class SQLiteJournal implements IJournal */ public function __construct($path) { - if (!extension_loaded('pdo_sqlite')) { - throw new Nette\NotSupportedException('SQLiteJournal requires PHP extension pdo_sqlite which is not loaded.'); - } $this->path = $path; } private function open() { + if (!extension_loaded('pdo_sqlite')) { + throw new Nette\NotSupportedException('SQLiteJournal requires PHP extension pdo_sqlite which is not loaded.'); + } + if ($this->path !== ':memory:' && !is_file($this->path)) { touch($this->path); // ensures ordinary file permissions }