繁体   English   中英

在PHP中存储全局数据的最佳实践?

[英]Best practice for storing global data in PHP?

我正在运行允许用户登录的Web应用程序。用户可以向他/她的“库”添加/删除内容,该库显示在名为“library.php”的页面上。 每次加载“library.php”时,我都不想在数据库中查询用户库的内容,而是希望在用户登录时将其全局存储为PHP,以便查询只运行一次。 这样做有最好的做法吗? FX。 将它们的库存储在会话中的数组中?

谢谢你的时间

如果您将每个用户的库作为数组存储在$_SESSION中,如您所建议的那样(这绝对可能),您必须确保用户对库所做的任何更新都会立即反映到该会话变量中。

老实说,除非有一些重要的查询正在进行获取库,或者你有大量的流量,我只会坚持“只要用户点击library.php就执行查询”。

考虑数据的大小。 乘以最大并发用户数。

然后将该内存与服务器上的内存进行比较。 还要考虑这是否是共享服务器; 其他网站也需要资源。

基于此,最好是创建一个可以使用的文件(根据Remi的评论),或者保持默认的无状态形式并且每次都读取。 我怀疑每次读取数据会产生很大的开销。

当用户登录时,您可以生成使用xslt显示的xml文件(例如,USER_ID.xml)。

http://php.net/manual/en/book.xslt.php

每个PHP脚本在完成时都会消失,因此无法像在PC应用程序中那样将数据永久保存在Web应用程序中。

一种方法可能是会话,但这取决于您要保存的数据量。 根据你的例子,你在谈论一个库,所以我觉得需要保存大量的数据,在这种情况下,数据库是要走的路,是的,你必须每次都查询它。

另一种方法可能是将它们保存在php文件中的数组中,但是每次都必须查询数据库,每次都必须包含这样的php文件。

由于这是一个db性能优化,我建议你看一下与你的问题完全匹配的memcached

memcached是[..],旨在通过减轻数据库负载来加速动态Web应用程序。

我认为最好将它存储在Session中。
用户登录后,正在创建会话,您可以使用超全局保存数据:

$_SESSION['key'] = "value";

您还可以存储阵列或其他所有内容,如果用户注销,则可以清除它。

你关心表现; 请注意:

  • 会话可以使用数据库文件来存储数据。
  • 数据库在这里用于代替文件,因为它的性能和能力。

使用数据库 ,它被设计为在这种情况下使用!

暂无
暂无

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

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