php - fatal error : Allowed Memory Size of 1342177

我有一堆客户销售点 (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/

相关文章:

php - 如何将 var_dump 的结果捕获到字符串?

php - 可以使用 PHP 短标签吗?

php - PHP中@符号的用途是什么?

php - htmlentities() 与 htmlspecialchars()

php - PHP 中的 HTTP_HOST 和 SERVER_NAME 有什么区别?

php - 在 PHP 中使用前导零格式化数字

php - 我可以将数组绑定(bind)到 PDO 查询中的 IN() 条件吗?

php - 如何在 PHP 中将字符串转换为数字?

php - 如何捕获 PHP 致命 (`E_ERROR` ) 错误?

php - 如何在 PHP 中获得有用的错误消息?