Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.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 Joomla 3+奇怪的会话存储行为_Php_Mysql_Session_Joomla_Joomla3.0 - Fatal编程技术网

Php Joomla 3+奇怪的会话存储行为

Php Joomla 3+奇怪的会话存储行为,php,mysql,session,joomla,joomla3.0,Php,Mysql,Session,Joomla,Joomla3.0,众所周知,Joomla支持不同类型的会话处理程序文件、数据库、none、memcached等。当用户将会话处理程序设置为none时,我们希望不再需要查询数据库来处理会话数据 但当您将sessionhandler设置为none时,您将看到您的_会话仍然有数据,并且在每个命中的页面上都有对此表的查询 在/libraries/cms/application/cms.php中可以看到函数checkSession 在这个函数中,您可以看到用于选择和插入会话表的数据库查询 如果你简单的加上退货;由于会话处理

众所周知,Joomla支持不同类型的会话处理程序文件、数据库、none、memcached等。当用户将会话处理程序设置为none时,我们希望不再需要查询数据库来处理会话数据

但当您将sessionhandler设置为none时,您将看到您的_会话仍然有数据,并且在每个命中的页面上都有对此表的查询

在/libraries/cms/application/cms.php中可以看到函数checkSession

在这个函数中,您可以看到用于选择和插入会话表的数据库查询

如果你简单的加上退货;由于会话处理程序设置为“无”,语句站点仍将完全可用


为什么我们需要这个功能?为什么这个函数不检查我们使用什么类型的会话处理程序?这种行为是必要的还是我在函数开头添加return的解决方案是正常的

如果您没有会话,您的用户将不得不在他们访问的每个页面上再次登录。您的站点将变得极其缓慢,因为会话中存储的所有信息都必须重新创建,而不仅仅是在每个页面上重新读取。如果转储会话对象,您将看到它包含大量信息。会话是PHP如何变得有状态的。在这种情况下,没有一个是最小值的回退。这并不理想,包很旧,但您始终需要会话。不,如果将会话处理程序设置为“无”,则会话数据将存储在文件处理程序中。您可以在/libraries/joomla/session/storage/none中检查此项。如果查看JApplicationCMS::loadSession,您将看到以下注释:`//TODO:在某个时候,我们需要避免将会话数据始终保留在数据库中。$db=JFactory::getDbo;`基本上,CMS应用程序是围绕它构建的,无论发生什么情况,它都在te db中有一个记录。这是一个相当古老的代码,没有人喜欢它,但要解开它是一件大事。另外,CMS在历史上也有很多无法编写文件的用户的问题。同样的问题,在最新版本的Joomla中看起来还没有解决。@Elin我意识到这已经4年了,但我面临着同样的问题,我在Github上找不到JApplicationCMS类源代码。你能发一个链接到它吗?也许它同时被重命名了,或者问题已经解决了?
/**
* Checks the user session.
*
* If the session record doesn't exist, initialise it.
* If session is new, create session variables
*
* @return  void
*
* @since   3.2
*/