【发布时间】:2019-06-01 20:13:48
【问题描述】:
我有一个单页响应式 HTML 页面。页面的一个部分有产品搜索。用户可以在表单中输入搜索条件并取回结果。结果是分页的。
<form id="filterform" name="filterform" method="post" action="./loaddata.php">
...
</form>
表单由 Ajax 提交,结果作为 HTML 片段返回,该片段动态插入到 DOM 中以刷新结果。
一切正常,但有时 loaddata.php 的结果很慢,通常是第一次从页面调用。
在 loaddata.php 中,我使用的是 Sqlite3 数据库。它是只读的。类似于以下内容:
$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 加载并留在内存中以响应表单提交?好像每次提交都会重新加载。
【问题讨论】:
-
是的,但你需要 Redis 或 Memcache,PHP 本身无法做到这一点,因为它不会在请求之间共享内存,在处理请求后一切都会被破坏。但是,如果您要设置 Redis / Memchace,我认为迁移到 MySQL 会更容易。对于这种基本的 SQL 查询,使用普通的 MySQL / MariaDB 不会有任何性能问题。
标签: php performance sqlite form-submit