我有一堆客户销售点 (POS) 系统,它们定期将新的销售数据发送到一个中央数据库,该数据库将数据存储到一个大数据库中以生成报告。
客户端 POS 基于 PHPPOS,我实现了一个使用标准 XML-RPC 库向服务发送销售数据的模块。服务器系统建立在 CodeIgniter 之上,并使用 XML-RPC 和 XML-RPCS 库作为 Web 服务组件。每当我发送大量销售数据(sales 表中只有 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');
更改 memory_limit
是不是正确的解决方案。请不要那样做。
您的 PHP 代码可能在某处存在内存泄漏,而您正在告诉服务器只使用它想要的所有内存。你根本不会解决问题。如果您监控您的服务器,您会发现它现在可能正在使用大部分 RAM 甚至交换到磁盘。
您可能应该尝试追踪代码中的违规代码并修复它。
关于php - fatal error : Allowed Memory Size of 134217728 Bytes Exhausted (CodeIgniter + XML-RPC),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/561066/