我正在运行一个允许用户登录的Web应用程序。用户可以将内容添加到他/她的“库”中,该库显示在名为“library.php”的页面上。在每次加载“library.php”时,不需要为数据库查询用户库的内容,我希望在用户登录时将其全局存储到PHP中,以便查询只运行一次。有这样做的最佳做法吗? FX。将他们的库存储在会话中的数组中?在PHP中存储全局数据的最佳实践?
感谢您的时间
我正在运行一个允许用户登录的Web应用程序。用户可以将内容添加到他/她的“库”中,该库显示在名为“library.php”的页面上。在每次加载“library.php”时,不需要为数据库查询用户库的内容,我希望在用户登录时将其全局存储到PHP中,以便查询只运行一次。有这样做的最佳做法吗? FX。将他们的库存储在会话中的数组中?在PHP中存储全局数据的最佳实践?
感谢您的时间
如果每个用户的库存储在$_SESSION
作为数组,如你所说(这绝对是可能的),那么必须确保用户进行任何更新到库中立即反映给该会话变量。老实说,除非有一些严重的查询正在进行一个库的获取,否则你有很多流量,我只需坚持'每当用户点击library.php时执行查询'。
我认为最好将它存储在会话中。
它在用户登录时,所创建的会话,并且可以使用超全局中保存数据:
$_SESSION['key'] = "value";
您还可以存储阵列或其他一切存在,并且可以清除如果用户注销。
当用户登录时,您可以生成xslt显示的xml文件(例如USER_ID.xml)。
考虑数据的大小。乘以最大并发用户数。
然后比较你的服务器上可用的内存。还要考虑这是否是共享服务器;其他网站也需要资源。
基于此,最好创建一个可以使用的文件(按照Remi的评论),或者保持默认的无状态形式并每次读取。我怀疑每次读取数据都会造成很大的开销。
每个PHP脚本完成后就会死亡,因此无法像在PC应用程序中那样将数据永久保存在Web应用程序中。
一种方法可能是会话,但它取决于您想要保存的数据量。根据你的例子,你正在谈论一个图书馆,所以在我看来,需要保存大量数据,在这种情况下,数据库就是要走的路,而且每次都必须查询它。
另一种方式可能是将它们保存在一个php文件中的数组中,但是每次您都必须查询数据库时,您必须每次都包含这样的php文件。
由于这是一个分贝的性能优化,我建议你看一看memcached这完全符合您的问题:
memcached是[..]旨在用于加快 动态Web应用程序通过 缓解数据库负载。
你关心表现;请注意:
使用数据库,它被设计为在这种情况下使用!
“全球”通常意味着“每个人都有一个实例”。你所追求的是每个用户会话数据。 – 2010-03-08 15:21:35