PHP SESSION重置过多的数据

时间:2014-01-28 12:40:18

标签: php session oscommerce

我已经创建了一个测试文件,以了解我的会话有多大。

这是这样的:

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(真的很旧)。

2 个答案:

答案 0 :(得分:1)

抱歉误导了家伙。这似乎是因为我将会话存储在数据库中(使用osCommerce)。保存会话值的数据库字段被设置为类型Text,即64KB。我已将其更改为Mediumtext(16MB)。如果有人在会话中需要更多数据,他们可能希望使用Longtext(4GB)。

答案 1 :(得分:0)

您无法在php中为会话设置大小。 但是,您可以设置内存限制[我建议您在执行此操作时要小心代码中的限制]。

http://ca.php.net/manual/en/ini.core.php#ini.memory-limit