PHP,会话不存储超过一定数量的DB记录

时间:2015-04-28 08:17:40

标签: php codeigniter session

我发现自己处于一种奇怪的境地。

我有3台服务器:

服务器H:

  • DB
  • App(v.3.222)

服务器D:

  • DB
  • App(v.3.23)

本地服务器:

  • DB
  • App(v.3.23)

App是用Codeigniter制作的,它从DB中读取一个包含许多商店的表,当我点击其中一个时,我将一些数据从DB加载并存储到Session,然后我路由到一个页面显示其他信息以及会话信息。

当DB包含13个商店时,没有问题。如果我从数据库添加一个商店(现在包含14个商店),PHP会话停止存储,我会收到错误。就像会话是空的一样,会话中的任何信息都会被加载和删除,或者根本没有加载。

奇怪的是,问题出现在Server HServer D上,但不在本地。如果我运行本地服务器并加载Server H DB工作正常,如果我在本地加载Server D DB,则相同。所以问题不在于数据库。更改应用程序版本也是如此。

修改

加载的商店是一个包含一些数据的数组:

'username' => $this->input->post('user'), //64
'is_logged_in' => TRUE, //Bool
'nome' => $this->login_model->nome, //128
'usrclass' => $this->login_model->usrclass, //32
'defaultlevel' => $this->login_model->defaultlevel, //32
'usremail' => $this->login_model->usremail, //64
'usershop' => $this->login_model->usershop, //INT

很少有人认为是记忆问题。

唯一剩下的就是2台服务器的配置,但是什么?

是否存在php.ini问题?我怎么知道?

编辑2

我发现这是一个记忆问题。 'usershop'包含一个数组,如果是13记录它可以正常工作,如果更大则以下变量不会存储到内存中。

我环顾四周,发现php会话没有限制(内存/大小),所以这怎么可能?

1 个答案:

答案 0 :(得分:2)

这是内存问题/文件大小/列大小组合问题。

您的会话(取决于您的存储方式)受限于文件大小(如果保存到文件),通常为128MB,如果存储到db,则限制为列大小。

另请检查php.ini中的内存限制,因为这可能也会产生影响。