\RuntimeException When neither of SQLite3 or PDO_SQLite extension is enabled
Overrides PdoProfilerStorage::initDb
protected function initDb() {
if (null === $this->db || $this->db instanceof \SQLite3) {
if (0 !== strpos($this->dsn, 'sqlite')) {
throw new \RuntimeException(sprintf('Please check your configuration. You are trying to use Sqlite with an invalid dsn "%s". The expected format is "sqlite:/path/to/the/db/file".', $this->dsn));
}
if (class_exists('SQLite3')) {
$db = new \SQLite3(substr($this->dsn, 7, strlen($this->dsn)), \SQLITE3_OPEN_READWRITE | \SQLITE3_OPEN_CREATE);
if (method_exists($db, 'busyTimeout')) {
// busyTimeout only exists for PHP >= 5.3.3
$db
->busyTimeout(1000);
}
}
elseif (class_exists('PDO') && in_array('sqlite', \PDO::getAvailableDrivers(), true)) {
$db = new \PDO($this->dsn);
}
else {
throw new \RuntimeException('You need to enable either the SQLite3 or PDO_SQLite extension for the profiler to run properly.');
}
$db
->exec('PRAGMA temp_store=MEMORY; PRAGMA journal_mode=MEMORY;');
$db
->exec('CREATE TABLE IF NOT EXISTS sf_profiler_data (token STRING, data STRING, ip STRING, method STRING, url STRING, time INTEGER, parent STRING, created_at INTEGER)');
$db
->exec('CREATE INDEX IF NOT EXISTS data_created_at ON sf_profiler_data (created_at)');
$db
->exec('CREATE INDEX IF NOT EXISTS data_ip ON sf_profiler_data (ip)');
$db
->exec('CREATE INDEX IF NOT EXISTS data_method ON sf_profiler_data (method)');
$db
->exec('CREATE INDEX IF NOT EXISTS data_url ON sf_profiler_data (url)');
$db
->exec('CREATE INDEX IF NOT EXISTS data_parent ON sf_profiler_data (parent)');
$db
->exec('CREATE UNIQUE INDEX IF NOT EXISTS data_token ON sf_profiler_data (token)');
$this->db = $db;
}
return $this->db;
}