【问题标题】:php-excel-reader Allowed memory size of 134217728 bytes exhaustedphp-excel-reader 允许的内存大小为 134217728 字节已用尽
【发布时间】:2012-06-18 10:33:20
【问题描述】:
require_once 'Excel/reader.php';
$data = new Spreadsheet_Excel_Reader();

$data->read('Senator.xls');

我的 error.log 中出现以下错误

PHP Fatal error:  Allowed memory size of 134217728 bytes exhausted (tried to allocate 32 bytes)

奇怪的是,这在我的开发实例上运行良好。但不在生产中。我应该寻找哪些差异。

注意:两个 env 的 memory_limit=128M

【问题讨论】:

标签: php


【解决方案1】:

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

使用此 hack 来确保

$_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;

【讨论】:

  • 这解决了我的内存问题,但文件仍然无法完全导入
  • 这解决了问题?
【解决方案2】:

取决于它给出错误的女巫线:我的是

PHP Fatal error:  Allowed memory size of 67108864 bytes exhausted (tried to allocate 32 bytes) in [] on line 1688

这是函数

addcell($row, $col, $string, $info=null) {

尤其是 foreach 循环。据我了解,这是关于颜色单元偏移或类似信息的信息,所以我评论了循环,现在它使用的内存要少得多。

如果您不需要执行此类代码,您可以对其进行注释并尝试。

【讨论】:

    猜你喜欢
    • 2017-08-26
    • 2012-08-29
    • 2015-09-23
    • 2015-07-06
    • 1970-01-01
    • 2011-07-30
    • 1970-01-01
    • 1970-01-01
    • 2011-02-23
    相关资源
    最近更新 更多