我已经创建了一个测试文件,以了解我的会话有多大。
这是这样的:
print_r($_SESSION);
$test = array();
for ($i=0;$i<3320;$i++) {
$test[$i] = "test:)";
}
$size = mb_strlen(serialize($test), '8bit');
echo "Size: $size";
$_SESSION['test'] = $test;
当我这样做时,$_SESSION['test']
被重置(其值为空)。当我在较小的for
(3319次)或较短的字符串中执行此操作时,它的工作正常。在这种情况下,大小值为65279字节。我想我应该能够在php.ini中更改一些设置以便能够存储更多数据,但是那会是哪一个?
仅仅为了您的信息 - 我不关心性能,当时不应该有多个人使用脚本,而是与另一台服务器进行某些同步,因此用户无论如何都需要等待。我只是在寻找一个信息,如何在$_SESSION
表中存储更多数据。
我的PHP版本是5.2.17,我正在使用osCommerce(真的很旧)。
答案 0 :(得分:1)
抱歉误导了家伙。这似乎是因为我将会话存储在数据库中(使用osCommerce)。保存会话值的数据库字段被设置为类型Text
,即64KB。我已将其更改为Mediumtext
(16MB)。如果有人在会话中需要更多数据,他们可能希望使用Longtext
(4GB)。
答案 1 :(得分:0)
您无法在php中为会话设置大小。 但是,您可以设置内存限制[我建议您在执行此操作时要小心代码中的限制]。