首页 > 解决方案 > 如何打开已经在内存中的 SQLite3 文件,而无需在 PHP 中接触磁盘?

问题描述

我有一个从网络读入内存(作为字符串)的 SQLite3 文件。我想打开它并查询它。我知道 SQLite3 可以使用描述符创建空的内存数据库。:memory:但我想知道如何在不接触磁盘的情况下加载现有数据库。

目前,我正在这样做:

$tempName = tempnam(sys_get_temp_dir(), 'sqlite3-');
$temp = fopen($tempName, 'w');
fwrite($temp, $cache->getDB($cacheKey));
fclose($temp);

// Delete the temp file when we're done.
register_shutdown_function('unlink', $tempName);

// ...

$db = new SQLite3($tempName, SQLITE3_OPEN_READONLY);

// Query the DB

$db->close();

这工作正常,但它不必要地触及磁盘。

我已经看过这个答案,但这仅涵盖 C,而不是 PHP。

我也尝试将文件保存到php://memory,但 SQLite3 无法打开它。

标签: phpsqlite

解决方案


推荐阅读