首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >内存中的PHP和SQLite服务

问内存中的PHP和SQLite服务
EN

Stack Overflow用户
提问于 2019-06-02 04:13:48
回答 1查看 91关注 0票数 0

我有一个单页面响应HTML页面。页面的一部分包含产品搜索。用户可以在表单中输入搜索条件并返回结果。结果是分页显示的。

代码语言:javascript
复制
<form id="filterform" name="filterform" method="post" action="./loaddata.php">
   ...
</form>

表单由Ajax提交,结果以HTML片段的形式返回,并动态插入到DOM中以刷新结果。

这一切工作正常,但有时loaddata.php的结果非常慢,通常是第一次从页面调用。

在loaddata.php中,我使用的是Sqlite3数据库。它是只读的。类似于以下内容:

代码语言:javascript
复制
$filename = "../datafile.sqlite3";
$db = new SQLite3($filename);
$q = "SELECT distinct productId, title, price, name FROM datatable LIMIT 16";
$results = $db->query($q);
while ($row = $results->fetchArray()) {
    echo "<h1>Results</h1>";
}
$db->close();

有没有办法让loaddata.php加载并留在内存中以响应表单提交?似乎每次提交都会重新加载。

EN

回答 1

Stack Overflow用户

发布于 2019-06-02 05:12:51

根据数据表的大小,您可以将其保存在会话中,使用shmop_open/shmop_write/shmop_read这样的函数,或者(最好是)使用一些缓存服务,比如redis,但在某种程度上,每次您经过那个地方时,数据都会被存储和处理。我会将页面分成几个部分,创建一个and服务来处理表单post,另一个来显示表单。

最简单的(不一定是最安全或最好的)方法是……PS:我假设您正在使用PDO,并且(显然)下面的代码是一个详细说明,它实际上不会工作

代码语言:javascript
复制
if (isset($_SESSION['db_datatable'])) {
    foreach ($_SESSION['db_datatable'] AS $item) {
        echo "<h1>".$item['some_row']."</h1>";
    }
} else {
    $filename = "../datafile.sqlite3";
    $db = new SQLite3($filename);
    $q = "SELECT distinct productId, title, price, name FROM datatable LIMIT 16";
    $results = $db->query($q);
    while ($row = $results->fetchArray()) {
        $_SESSION['db_datatable'][] = $row;
        echo "<h1>Results</h1>";
    }
    $db->close();
}

希望我能帮上忙。干杯!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56410113

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档