致命错误:允许的内存大小为 134217728 字节已耗尽(CodeIgniter + XML-RPC)

2022-08-30 05:47:34

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

客户端 POS 基于 PHPPOS,我实现了一个模块,该模块使用标准 XML-RPC 库将销售数据发送到服务。服务器系统建立在CodeIgniter之上,并使用XML-RPC和XML-RPCS库作为Web服务组件。每当我发送大量销售数据(销售表中只有 50 行,以及来自sales_items中与销售中每个项目相关的单个行)时,我都会收到以下错误:

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

128M 是 中的默认值,但我假设这是一个巨大的数字。实际上,我甚至尝试将此值设置为1024M,它所做的只是花费更长的时间来出错。php.ini

至于我采取的步骤,我尝试禁用服务器端的所有处理,并对其进行操纵以返回预设响应,而不管输入如何。但是,我认为问题在于数据的实际发送。我甚至尝试过禁用PHP的最大脚本执行时间,但它仍然出错。


答案 1

更改 by 不是一个正确的解决方案。请不要这样做。memory_limitini_set('memory_limit', '-1');

您的PHP代码可能在某个地方有内存泄漏,并且您告诉服务器只使用它想要的所有内存。你根本不会解决这个问题。如果您监视服务器,您会发现它现在可能正在耗尽大部分RAM,甚至交换到磁盘。

您可能应该尝试跟踪代码中的违规代码并进行修复。


答案 2

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


推荐