php - 如何打开已经在内存中的 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 无法打开它。
解决方案
推荐阅读
- c++ - 在 .text 部分定义只读数据的原因是什么?
- angular - Angular4 - 有没有办法使指令透明?
- javascript - 如何同时停止传播和允许模态?
- android - xamarin android 开始阻塞 GC eXPLICIT?
- python - 字符串作为关键字参数,并将 str.partition() 输出中的多个 dict 组合到一个 dict
- spring-boot - jhipster 登录页面未显示为 0auth 2.0
- selenium - 将存储字符串和硬写字符串与 If 语句进行比较
- tcpdf - tcpdf 的 imageSVG() 方法无法正确渲染 svg 文件
- reactjs - 在 react 和 electron 上通过“网站的安全证书”
- algorithm - 跳过已预订的时段并重新安排时段