繁体   English   中英

Php Globals诉数据库要求大量数据

[英]Php Globals v. Database calls for lots of data

对于大型数组,是否需要在每次需要时将数据保存到全局变量或查询数据库更好? 在我的情况下,将它们保留在本地范围内并传递给函数不是一种选择。

我使用的是wordpress,在大多数页面中,我都会获得每个用户以及所有附加到他们的元数据。 通常,我经常在同一页面的多个位置使用这些变量。 不幸的是,wordpress不允许我在模板之间传递变量,因此每次使用全局变量或调用数据库时都会遇到麻烦。 最终,这将是数百个用户,每个用户都附有很多元数据。 我应该每次都调用数据库以使变量保持局部状态,还是应该将它们保存到全局变量中以保存数据库查询? 有哪些注意事项? 我应该担心性能,开销和/或其他问题吗?

非常感谢!

解决您问题的唯一真正方法是使用某种缓存系统( MemcacheRedis是您的最佳选择)。 幸运的是,有许多Wordpress插件使集成变得容易。 例如:

编辑

如果您只想缓存一些数据库调用,则可以忘记Wordpress插件并开始编写一些代码。 假设您只想缓存用于从数据库中检索用户列表的调用,并假设您正在使用Memcache完成此任务(Memcache存储键值对,并允许超快速访问给定键的值)。

  1. 查询Memcache要求键“ 用户 ”。
  2. Memcache仍然没有这样的密钥,因此您将遇到缓存失败的情况,之后,您将查询数据库以检索用户列表。 现在,序列化数据库响应( serializejson_encode是执行此操作的两种不同方式),并将键“ users ”和该序列化的值一起存储在内存缓存中。
  3. 下次您查询Memcache询问“用户”时,您将获得成功。 此时,您只需要反序列化值并使用用户列表即可。

就这样。 现在,您只需要确定要缓存的内容并将此过程应用于这些元素即可。

您不必执行呼叫,而是每页执行一次,您可能必须为每个页面执行一次调用。 因此,我建议您创建某种类以与数据库进行交互,您可以调用该类来获取所需的数据。 我还建议您在数据库上使用存储过程和函数,而不是直接查询,因为这将有助于安全性以及应用程序逻辑和数据功能的分离。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM