我有一堆客户销售点(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)
Run Code Online (Sandbox Code Playgroud)
128M是默认值php.ini
,但我认为这是一个很大的数字.实际上,我甚至尝试将此值设置为1024M,而它所做的只是花费更长的时间来输出错误.
至于我采取的步骤,我已经尝试禁用服务器端的所有处理,并且已经操纵它以返回固定响应而不管输入如何.但是,我认为问题在于实际发送数据.我甚至尝试禁用PHP的最大脚本执行时间,但它仍然出错.
我之前有这个工作:
echo ini_get("memory_limit")."\n";
ini_set("memory_limit","256M");
echo ini_get("memory_limit")."\n";
Run Code Online (Sandbox Code Playgroud)
那会输入这个:
32M
256M
Run Code Online (Sandbox Code Playgroud)
在由命令行执行的php脚本上.我从5.2更新到5.3,从现在起,这个指令根本不起作用:这给了我:
32M
32M
Run Code Online (Sandbox Code Playgroud)
然后使我的脚本失败并发生致命错误...
我检查了php文档,然后用Google搜索,我没有找到"memory_limit"已被弃用的地方.
有没有人有办法解决吗?
热点解决这个问题以及它为什么会发生?
Zend服务器日志:
PHP致命错误:第3行的C:\ Program Files(x86)\ Zend\Apache2\htdocs\test\modules\main.php中允许的内存大小为134217728字节(尝试分配538798977字节)
如果文件main.php
是直接从浏览器执行的,则该文件不会产生任何错误.但是,如果我使用其他PHO文件中的函数,则Zend Log会打印出上述错误.