当内存足够时,“允许的内存大小”错误

时间:2014-03-25 17:26:08

标签: php memory-management fastcgi

我有

PHP致命错误:Allowed memory size of 13241728 bytes exhausted (tried to allocate 24 bytes)

脚本(php)文件为400kb,输出为250kb

它打开(并反序列化)几个文件,每个文件不超过8mb(总共32Mb)。

例如:

while (($file = readdir($dir))!=false) {
$inf=file_get_contents($file);
$inf=unserialize($inf);
......
}

我正在使用fast-cgi。

为什么没有足够的内存呢?

我一直在php.ini中设置它从12Mb,16,32,50(相同的错误)到80Mb(哇它可以工作)

现在它被设置为-1,但我想弄清楚为什么会发生这种情况以及如何解决它(可能会取消某些变量或其他东西)

1 个答案:

答案 0 :(得分:1)

这是因为php不知道如何正确地反序列化$ inf。

它以无限的方式循环。

您想要获取的文件中有什么内容?

我认为这是因为您试图将未序列化的变量保存到自身中。

unserialize是reurisuris ...

所以你应该这样做:

  $variable = unserialize ( $inf );

而不是

  $inf = unserialize ( $inf );

官方php doc:http://php.net/unserialize