protected function useCachedDatabase()
{
$container = static::$kernel->getContainer();
$om = $this->em;
$connection = $om->getConnection();
if ($connection->getDriver() instanceof SqliteDriver) {
$params = $connection->getParams();
$name = isset($params['path']) ? $params['path'] : $params['dbname'];
$filename = pathinfo($name, PATHINFO_BASENAME);
$backup = $container->getParameter('kernel.cache_dir') . '/' . $filename;
// The first time we won't use the cached version
if (self::$isFirstTest) {
self::$isFirstTest = false;
return false;
}
self::$isFirstTest = false;
// Regenerate not-existing database
if (!file_exists($name)) {
@unlink($backup);
return false;
}
$om->flush();
$om->clear();
// Copy backup to database
if (!file_exists($backup)) {
copy($name, $backup);
}
copy($backup, $name);
return true;
}
return false;
}