致命错误:读取大型Excel文件时,允许的内存大小已耗尽

时间:2014-03-03 12:56:56

标签: php excel

我在使用 Spreadsheet_Excel_Reader 读取大型.xls文件时说错误是29MB(3张,28000行/张)。

致命错误:允许的内存大小为134217728个字节(试图分配71个字节)...

我将php.ini中的memory_limit更改为128M,并尝试将其运行时更改为ini_set('memory_limit',' - 1');无限但错误未解决。

3 个答案:

答案 0 :(得分:0)

不确定你能做'-1'。

你可以尝试:

ini_set('memory_limit', '512M');

答案 1 :(得分:0)

ini_set('memory_limit', '-1');会覆盖默认的PHP memory limit

和/或

ini_set('max_execution_time', INCREASE TIME);

答案 2 :(得分:0)

可能一台服务器有一个64位处理器。 GetInt4d位移不适用于64位处理器。

使用此hack确保32位和64位系统上<<< 24块的正确结果,只需用以下代码替换GetInt4d函数的代码: 位置:Excel / olereader.inc第27行,函数GetInt4d()

$_or_24 = ord($data[$pos+3]);

if ($_or_24>=128) $_ord_24 = -abs((256-$_or_24) << 24); else $_ord_24 = ($_or_24&127) << 24;

return ord($data[$pos]) | (ord($data[$pos+1]) << 8) | (ord($data[$pos+2]) << 16) | $_ord_24;