会话变量与Mysql表

时间:2011-08-05 17:54:53

标签: php mysql session

我打算在会话变量中保存我的用户经常使用的参数,即名称,图片等,而不是每次需要时从MySQL表中提取。在理论上将经常使用的参数保存在变量而不是数据库中应该更有效,但因为我不确定SESSION变量是如何保存的,所以我不太确定这是否属实。有没有人知道是否拉信息。来自SESSION变量比查询MySQL表更有效吗?

术语变量被松散地使用,因为SESSION“变量”存储在服务器临时目录中的文件中。

你会认为阅读文件比阅读数据库更昂贵,我的意思是数据库本质上是一个文件,但是为了这个目的而优化,而不是“临时会话文件”

5 个答案:

答案 0 :(得分:3)

是的,从会话变量中提取信息比查询数据库中的信息更有效。但是,加载信息 INTO 会话变量需要从服务器文件系统和RAM中读取文件,这取决于许多因素(磁盘速度,IO负载,db速度等)可能会更慢或者比从DB读取相同信息更快。如果没有关于您的具体设置的信息,很难说。需要记住的一点是,如果您计划增长和使用多个Web服务器,则需要编写一些自定义会话处理程序,以将会话存储到中央服务器(可能是数据库),内存缓存或共享安装所有Web服务器都可以获取会话文件的位置。

最后,将某些东西放入会话并从那里使用可以比每次从数据库加载它更有效,但是你仍然从某处加载它,< / em>所以,您的硬件和设置知识将是您最好的指南。

答案 1 :(得分:2)

PHP的默认会话处理程序将该信息存储到磁盘;每个会话一个唯一的临时文件。您可能遇到的问题是磁盘/文件系统是否过载,或者您的数据是否过时。

如果您要访问磁盘以访问会话,则访问MySQL的开销略微减少,但您仍然会在每次请求时访问磁盘。您可以尝试使用内存中的会话处理程序。

答案 2 :(得分:1)

会话变量是持久存储相对少量临时数据的首选。他们对“会话”有好处。

将数据库用于其他一切。特别是对于:

  • 更大量的数据,
  • 适用于任何类型的“交易”或
  • 表示需要在“会话”之间保留的数据。

这篇文章有点过时了,它本身并不适用于PHP ......但它应该让你对文件系统(例如NTFS)与数据库(例如MSSQL)的相对效率有所了解:

答案 3 :(得分:0)

是的,使用会话变量更有效。 通常,Session变量存储在/ tmp目录中的服务器上(您可以检查PHP Info文件以查看您的配置如何。

由于它们存储在服务器上,因此您可以假设它们与服务器的其他部分一样安全。

答案 4 :(得分:0)

是的,效率更高。会话保存在服务器上。但是,无论是否有会话,您都需要检查用户是否已记录以及用户是否具有正确的SESSION ID。这取决于您的列数,行数和许多其他内容