在Excel工作表和CSV阅读器中遇到一个问题,在Codeignitor中有大量记录。
A PHP Error was encountered
Severity: Warning
Message: simplexml_load_string(): Memory allocation failed : growing buffer
Filename: Reader/Excel2007.php
Line Number: 645
Backtrace:
File: \application\third_party\PHPExcel\Reader\Excel2007.php
Line: 645
Function: simplexml_load_string
File: \application\controllers\admin\Csv.php
Line: 56
Function: load
File: \index.php
Line: 322
Function: require_once
答案 0 :(得分:2)
要增加PHP内存限制设置,请编辑PHP.ini文件。只需增加php.ini中PHP内存限制行的默认值(例如:脚本可能消耗的最大内存量= 128MB)。
memory_limit = 256M
或者,您可以编辑.htaccess文件。
php_value memory_limit 256M
注意:如果您无权访问这些文件或缺乏进行此更改的经验,则可以联系您的虚拟主机,并要求他们增加您的PHP内存限制。
答案 1 :(得分:0)
第一种选择是使用文件php.ini中的设置增加php的内存。
memory_limit = 256M
这个数字可以更低也可以不同,但是至少应该比现在更高,但是可以肯定的是它也可以高于256M。 更改之后,也许必须重新启动服务器(取决于某些事情)。
如果这没有帮助,那么值得看一下应用程序甚至CSV文件。
有关大多数框架的基本问题是,如果应用了数据,则将其收集,保存在内存中,进行解析,然后将结果显示或写入数据库中。
大数据程序可以以某种方式对数据进行分块,这也意味着仅可以逐步简化和处理(例如视频或声音文件)。
由于XML
不是流格式,但是在处理之前通常需要完全解析的结构,提示可能看起来有点没用。但是也许您可以采取一些措施来减少要立即处理的数据量:
simplexml
一次处理多个文件,那么减少文件量就很容易了。XML
文件太大,则必须生成较小的文件。也可以拆分文件,但需要了解XML
的一些知识。通常,对CodeIgniter
中的实现进行细微调整可能已经解决了问题,但是由于此处未知,我们只能对此进行猜测。