【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>
我有一堆客户端销售点(POS)系统,这些系统定期将新的销售数据发送到一个集中式数据库,该数据库将数据存储到一个大型数据库中以生成报告。
客户端POS基于PHPPOS,我已经实现了一个模块,该模块使用标准XML-RPC库将销售数据发送到服务。 该服务器系统基于CodeIgniter构建,并为Web服务组件使用XML-RPC和XML-RPCS库。 每当我发送大量销售数据时(从sales表中少到50行,而来自sales_items中与销售中每个项目有关的单独行)都会出现以下错误:
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 54 bytes)
php.ini
的默认值为128M,但是我认为这是一个很大的数字。 实际上,我什至尝试将此值设置为1024M,而这样做所花费的时间更长。
至于我采取的步骤,我尝试禁用服务器端的所有处理,并操纵它以返回固定响应,而不管输入如何。 但是,我认为问题出在实际发送数据上。 我什至尝试禁用PHP的最大脚本执行时间,但仍然出错。
#1楼
对于Drupal用户,此Chris Lane的回答是:
ini_set('memory_limit', '-1');
可以,但是我们需要在开幕之后放
<?php
网站根目录中index.php文件中的标记。
#2楼
在Drupal 7中,您可以在站点/默认文件夹中的settings.php文件中修改内存限制。 在260行附近,您会看到:
ini_set('memory_limit', '128M');
即使您的php.ini设置足够高,但如果您的Drupal settings.php文件中未设置该值,您将也不会消耗超过128 MB的内存。
#3楼
正确的方法是编辑php.ini
文件。 将memory_limit
编辑为所需的值。
根据您的问题,已经超过了128M
(这是默认限制),因此您的代码存在严重问题,因为它占用的时间不多。
如果您知道为什么要花那么多钱并且想要允许它设置memory_limit = 512M
或更高,那么您应该很好。
#4楼
通过ini_set('memory_limit', '-1');
更改memory_limit
ini_set('memory_limit', '-1');
不是正确的解决方案。 请不要那样做。
您的PHP代码可能在某处存在内存泄漏,并且您告诉服务器只使用它想要的所有内存。 您根本不会解决问题。 如果监视服务器,您会发现它现在可能已用完大部分RAM,甚至交换到磁盘。
您可能应该尝试在代码中查找有问题的代码并进行修复。
#5楼
PHP 5.3+允许您通过将.user.ini
文件放置在public_html
文件夹中来更改内存限制。 只需创建上面的文件并在其中输入以下行:
memory_limit = 64M
某些cPanel主机仅接受此方法。
来源:oschina
链接:https://my.oschina.net/stackoom/blog/3153390