在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
第一个选择是使用文件php.ini中的设置增加php的内存。
memory_limit = 256M
该数字可以更低也可以不同,但是至少应该比现在更高,但是可以肯定的是它也可以高于256M。更改之后,也许必须重新启动服务器(取决于某些事情)。
如果没有帮助,那么值得看一下应用程序甚至CSV文件。有关大多数框架的基本问题是,如果应用了数据,则将数据收集,保存在内存中,进行解析,然后将结果显示或写入数据库中。大数据程序可以以某种方式对数据进行分块,这也意味着仅可以逐步简化和处理(例如视频或声音文件)。由于XML
不是流格式,但在处理之前通常需要完全解析的结构,提示可能看起来有点没用。但是也许您可以采取一些措施来减少要立即处理的数据量:
simplexml
一次处理多个文件,仅减少文件量就应该很容易。XML
文件太大,则必须生成较小的文件。也可以分割文件,但需要一点有关XML
的知识。[一般来说,对CodeIgniter
中的实现进行细微调整可能已经解决了问题,但由于这里未知,我们只能猜测一下。
要增加PHP内存限制设置,请编辑您的PHP.ini文件。只需增加php.ini中PHP内存限制行的默认值(例如:脚本可能消耗的最大内存量= 128MB)。
memory_limit = 256M
或者,您也可以编辑.htaccess文件。
php_value memory_limit 256M
注意:如果您无权访问这些文件或缺乏进行此更改的经验,则可以联系您的虚拟主机,并要求他们增加您的PHP内存限制。