问题描述
我之前从未使用过apc_store(),我也不确定是否释放查询结果。所以我有这些问题...
在 MySQL Query Cache article here 中,它说“MysqL 查询缓存是在会话之间共享的全局缓存。它将选择查询与结果集一起缓存,这使得相同的选择能够在数据获取时更快地执行从内存中。”
在选择查询后使用 free_result() 是否会否定上面提到的缓存?
另外,如果我想设置从 select 查询中获得的变量和数组以供跨页面使用,我应该通过 apc_store() 将变量保存在内存中吗? (我知道这也可以保存数组。)如果我这样做了,是否释放查询结果有关系吗?现在,我在大多数页面的包含文件中设置这些变量和数组,因为它们经常使用。这似乎不是很有效,这就是我寻找替代方案的原因。
感谢您提供有关执行上述操作的最有效方法的任何帮助/建议。
解决方法
MySQL 的“查询缓存”是 MySQL 内部的。您仍然需要执行 SELECT
;如果启用 QC 并且在这种情况下可用,结果可能会更快返回。
我认为 QC 不是您要找的。p>
QC 将在较新版本中消失。不打算使用它。
在 PHP 中,考虑 $_SESSION
。不知道是不是比apc_store
好用。
另请注意,PHP 中直接可用的任何内容都将您限制在单个网络服务器上。 (这适用于中小型应用,但不适用于非常活跃的应用。)
为了扩展,考虑在 cookie 中存储一个小键,然后在数据库的表中查找该键。这提供了在数据库中存储任意数量的数据,只需几毫秒的开销。 “密钥”可能是“用户 ID”或“会话编号”或“购物车编号”等简单的内容。