我想知道哪种方式更有效,是使用PHP中的$_SESSION变量将临时数据(与该会话相关)存储在会话中,还是从SQL数据库中存储和检索?
谢谢您的时间。
谢谢您的时间。
请记住,会话变量是由存储机制支持的,也就是说,在请求完成后,会话处理程序会将会话写入文件中(默认情况下)。在下一个请求中,它会从文件(或其他会话处理程序使用的地方)中获取会话。
如果您每个请求都要读写这些数据,只需使用 $_SESSION 变量即可。连接、查询和更新数据库的开销不会比默认的 $_SESSION 更快。
当您运行多个负载均衡服务器并需要在它们之间共享会话数据时,您可能只需要使用基于数据库的会话。在这种情况下,如果您发现数据库会话的开销明显减慢了网站的速度,您可以考虑在 Web 服务器和数据库之间使用 memcached。
这取决于您想要存储的数据量和处理的流量大小。如果数据很少且网站不需要超出一个Web服务器的规模,那么请使用默认会话处理程序,将会话数据写入Web服务器的文件系统中。
如果您需要扩展到多台服务器,则建议将会话数据存储到内存数据库(例如memcached)或常规数据库中。您可以通过覆盖PHP的会话处理程序并编写自己的实现来在使用$_SESSION时将其存储到数据库中。
效率更高的方式取决于您要存储的数据量以及您计划如何处理临时数据。我有时会将5兆字节的会话数据存储在文件存储中,这会极大地影响性能。但是,5兆字节的状态是非常多的,你真的不应该达到那个程度。
无论如何,您可以配置PHP的会话存储在数据库表中,同时获得两种方式的最佳结果。
不过,如果数据并不适合作为用户会话的特征,则不应使用会话,而应使用某些模型对象。