SQLite, временные таблицы и таблицы в памяти
8 января 2011
SQLite можно заставить работать без файлов прямо в памяти. В случае PHP и PDO для этого в качестве соединения указывается sqlite::memory:
:
$db = new PDO('sqlite::memory:');
В этом случае база существует в памяти ровно до закрытия соединения.
Если же указать в качестве соединения sqlite:
, будет создан временный файл, который после закрытия соединения также будет удалён.
Оба типа соединения особенно полезны при написании модульных тестов, где как раз требуется частое создание и удаление баз данных.
Комментарии RSS по email OK
отличная идея - использование для тестов
однажды я баловался с базой данных :memory:
интерес вызывало постоянное соединение (PDO::ATTR_PERSISTENT)
такая база живет между соединениями для отдельных процессов PHP
фишка оказалась бесполезной т.к. сервера обслуживаются несколькими процессами PHP, время от времени их перезапуская
Ну, не совсем бесполезна:
в FastCGI та же проблема нескольких процессов и процессы он тоже перезапускает
CGI и вовсе живет одно соединение
при демоне надобность в постоянном соединении отпадает: достаточно обычного соединения
Хм, ну, выходит тогда что бесполезно…
А как создать временную таблицу из массива данных, чтобы было можно использовать ее в запросе? к примеру, mass_users_index во временную таблицу vt_mass_users_index, далее запрос вида select * from RoleTbl as RT inner join vt_mass_users_index as T on RT.index=T.index
Роман, если речь про SQLite, то как написано в посте +
CREATE TABLE
+INSERT
.