Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php:会话与数据库_Php_Mysql_Performance_Session - Fatal编程技术网

php:会话与数据库

php:会话与数据库,php,mysql,performance,session,Php,Mysql,Performance,Session,我有一个类可以从数据库中检索它的memeber(大约10个成员) 我的问题是:每次从db(MySQL)获取它们,只在会话的数组中留下一个ID,还是直接将它们存储在会话的数组中,效率更高 性能方面的差异是否如此之大?(假设数据库有10万行)取决于“高效”的含义。节省时间,节省磁盘空间。而且很难判断两者的优劣,除非你的需求处于光谱的任何一个极端。您可能会做得很好,只需掷硬币,随时间测量性能,并根据观察到的任何问题进行调整 过早优化是问题的根源 万恶 考虑到您正在会话中存储一个ID,会话是最有意义的。

我有一个类可以从数据库中检索它的memeber(大约10个成员)

我的问题是:每次从db(MySQL)获取它们,只在会话的数组中留下一个ID,还是直接将它们存储在会话的数组中,效率更高


性能方面的差异是否如此之大?(假设数据库有10万行)

取决于“高效”的含义。节省时间,节省磁盘空间。而且很难判断两者的优劣,除非你的需求处于光谱的任何一个极端。您可能会做得很好,只需掷硬币,随时间测量性能,并根据观察到的任何问题进行调整

过早优化是问题的根源 万恶


考虑到您正在会话中存储一个ID,会话是最有意义的。执行会话_start()会加载会话信息,因此在此之后加载1个或10个项目在很大程度上是无关紧要的(除非它们确实很大,但无论如何都会有问题)

因此,请坚持本课程

如果您真正关心速度,请使用内存缓存,如APC或memcache。担心文件系统或数据库中10个项目的速度会分散注意力。差别将是如此之小以至于无关紧要

注:以上假设有两件事:

  • 查询已执行(从100k中检索10行应该可以在0.1秒内完成);及
  • 您正在执行一个查询,而不是10个查询

  • 如果索引设置正确,表中的行数是100000行还是10000000行无关紧要


    虽然PHP默认的基于文件的会话肯定比从数据库中检索快,但在您的站点被大量使用之前,您不会注意到差异,比如每秒5000多个查询。

    祝贺您的报价;)无论如何,我关心的是速度。好吧,它们最终都来自磁盘,但它们都很可能被缓存,一个被数据库缓存,一个被操作系统缓存(或者甚至被web服务器/PHP模块缓存,具体取决于如何配置?),可能不值得去想。我建议你选择自然的方式:对于一个小网站,我猜这可能是会话方式;对于其他一切,数据库。如果您在共享主机上,可能希望避免使用会话方法,具体取决于服务器配置。