致命的错误。允许的内存大小为134217728字节,已经用完(CodeIgniter + XML-RPC)。

我有一堆客户的销售点(POS)系统,它们定期将新的销售数据发送到一个集中的数据库,该数据库将数据存储到一个大数据库中,以便生成报告。

客户端POS是基于PHPPOS的,我已经实现了一个模块,使用标准的XML-RPC库来发送销售数据到服务上。服务器系统建立在CodeIgniter上,并使用XML-RPC和XML-RPCS库作为网络服务组件。每当我发送大量的销售数据时(少则从销售表中发送50行,多则从sales_items中发送与销售中的每个项目有关的个别行),我就会得到以下错误。

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

128M是php.ini中的默认值,但我认为这是一个巨大的数字,无法打破。事实上,我甚至试过将这个值设置为1024M,而它所做的只是花更多的时间来出错。

至于我所采取的措施,我已经尝试在服务器端禁用所有处理,并操纵它返回一个预制的响应,无论输入什么。然而,我相信问题出在数据的实际发送过程中。我甚至试过禁用PHP的最大脚本执行时间,但它仍然出错。

ini_set('memory_limit', '-1');覆盖默认的PHP内存限制

评论(17)

在PHP脚本中很容易出现内存泄漏--特别是当你使用抽象的东西,比如ORM。试着用Xdebug来剖析你的脚本,看看那些内存都去哪儿了。

评论(6)

对于Drupal用户来说,这是Chris Lane'的回答。

ini_set('memory_limit', '-1');

可以使用,但我们需要把它放在开头的后面

<?php

标签放在网站根目录下的index.php文件中。

评论(0)