php session vs mysql speed

匿名 (未验证) 提交于 2019-12-03 08:54:24

问题:

i am working a on a permission system. In each page it will need to check whether if the user has the permission to do so. I have two choices, store the data in a session variable (which is only updated during login) or query the database for the information every time. Which is faster?

I realized that if the permission changes, I will need to update the session variable, therefore the user needs to relogin to "see" the changes in permission, but that is not a factor in the decision, only speed is.

回答1:

Speed of SESSION vs. DB is dependent on a number of factors:

  • How much data will be stored in the session variable
  • What's the actual backing store of the session variables (if it is database backed sessions, it'll be basically the same time)

I can tell that for small amounts of data, file based session variables will be faster than DB access.

You need to measure it to obtain a relevant comparison between the two methods in your application. I personally doubt that it will make a such a difference as to not go for the session solution.



回答2:

Set new value in session take:

Time: 0.00062895 Seconds

Insert same value in database take:

Time: 0.00000811 Seconds

Insert same value in Cookies

Time: 0.00000906 Seconds

Or you can test by using this code:

$before = microtime(true);     // Put your code here $after = microtime(true); $Speed = number_format(( $after - $before), 8);  echo "<h1>Time:  " . $Speed . " Seconds</h1>"; 


回答3:

I would store that kind of information in session :

  • That data is specific to the current user
  • Each user has its own version of the data
  • That kind of data is not likely to change often -- which means waiting until the session expires and the user comes back is often OK
    • and if you think it'll change often, you can keep some timestamp in session, alongside that data, to keep track of "when" that was fetched from the DB for the last time ; and if it's been fetched "too long ago", just re-fecth it every couple of minutes.


I would also add that, if one day you start having several distinct web-servers, you'll be able to store the session data using memcached -- which means it scales way better than the database.



回答4:

Short answer: Storing it in a session variable is probably a little faster, since you've already populated it from the database. That being said, I doubt that the speed of a single simple database query will bog you down in any real measurable way.



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!