[英]Best practice for storing global data in PHP?
我正在运行允许用户登录的Web应用程序。用户可以向他/她的“库”添加/删除内容,该库显示在名为“library.php”的页面上。 每次加载“library.php”时,我都不想在数据库中查询用户库的内容,而是希望在用户登录时将其全局存储为PHP,以便查询只运行一次。 这样做有最好的做法吗? FX。 将它们的库存储在会话中的数组中?
谢谢你的时间
如果您将每个用户的库作为数组存储在$_SESSION
中,如您所建议的那样(这绝对可能),您必须确保用户对库所做的任何更新都会立即反映到该会话变量中。
老实说,除非有一些重要的查询正在进行获取库,或者你有大量的流量,我只会坚持“只要用户点击library.php就执行查询”。
考虑数据的大小。 乘以最大并发用户数。
然后将该内存与服务器上的内存进行比较。 还要考虑这是否是共享服务器; 其他网站也需要资源。
基于此,最好是创建一个可以使用的文件(根据Remi的评论),或者保持默认的无状态形式并且每次都读取。 我怀疑每次读取数据会产生很大的开销。
当用户登录时,您可以生成使用xslt显示的xml文件(例如,USER_ID.xml)。
每个PHP脚本在完成时都会消失,因此无法像在PC应用程序中那样将数据永久保存在Web应用程序中。
一种方法可能是会话,但这取决于您要保存的数据量。 根据你的例子,你在谈论一个库,所以我觉得需要保存大量的数据,在这种情况下,数据库是要走的路,是的,你必须每次都查询它。
另一种方法可能是将它们保存在php文件中的数组中,但是每次都必须查询数据库,每次都必须包含这样的php文件。
由于这是一个db性能优化,我建议你看一下与你的问题完全匹配的memcached :
memcached是[..],旨在通过减轻数据库负载来加速动态Web应用程序。
我认为最好将它存储在Session中。
用户登录后,正在创建会话,您可以使用超全局保存数据:
$_SESSION['key'] = "value";
您还可以存储阵列或其他所有内容,如果用户注销,则可以清除它。
你关心表现; 请注意:
使用数据库 ,它被设计为在这种情况下使用!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.