Php 致命错误:允许的内存大小134217728字节已用尽(尝试分配87字节)
当我登录到我的web应用程序时,会显示如下错误: 致命错误:第775行/gt/2.ps.fo/home/hft/domains/console.fo.spalgo.com/public_html/cake/libs/model/datasources/dbo/dbo_mysql.php中允许的内存大小为134217728字节(尝试分配87字节)Php 致命错误:允许的内存大小134217728字节已用尽(尝试分配87字节),php,cakephp,Php,Cakephp,当我登录到我的web应用程序时,会显示如下错误: 致命错误:第775行/gt/2.ps.fo/home/hft/domains/console.fo.spalgo.com/public_html/cake/libs/model/datasources/dbo/dbo_mysql.php中允许的内存大小为134217728字节(尝试分配87字节) 有解决这个问题的办法吗?为什么会出现此错误?我通过搜索“PHP内存不足”找到的第一个示例是,听起来好像您已经分配了。编辑站点php.ini配置中的mem
有解决这个问题的办法吗?为什么会出现此错误?我通过搜索“PHP内存不足”找到的第一个示例是,听起来好像您已经分配了。编辑站点
php.ini
配置中的memory\u limit
设置,如链接页面所述
另一种可能性(可能性较小)是您已经达到了用户或组的
setrlimit(2)
资源限制。检查/etc/security/limits.conf
以了解可能为web服务器设置的限制,与启动服务器环境和PHP解释器环境的任何初始化脚本一起使用。尝试使用echo
而不是先将打印内容存储到变量。查看引发致命异常的文件(dbo_mysql.PHP
)我假定您的呼叫正在从数据库检索数据
ini_set('memory_limit', '-1');
另外,看看内存限制,它显示了134217728字节,即128MB,因此我认为无论您的API调用在做什么,都是在试图获取大量数据,这些数据的总量超过了每个脚本分配的限制。例如,如果API调用堆栈中的最后一个脚本根据需要使用
20MB
,然后从数据库中提取数据115MB
,那么您的脚本将尝试分配135MB
,该值已超过限制7MB
,从而导致致命异常
因此,我看到了一些需要检查/做的事情:
您没有检索不必要的数据,或者换句话说,只检索您需要的数据
如果您确实需要所有这些数据,那么
- 增加
php.ini
文件下的memory\u limit
值
Con:如果您的数据持续增长,您可能需要不断更新仅一个脚本的此值,并将自己暴露在内存泄漏或内存不足的情况下
- 或者我建议您实现某种分页(这将允许您检查内存限制),并使您的应用程序更具可伸缩性
这意味着您的代码正在做一些耗尽所有可用内存的事情。修复它,使其使用更少的内存和/或执行更少的操作。到-1时,它将取消内存限制并可能泄漏。你应该避免这种配置,在没有选择的时候使用它。虽然这两种说法都有可能,但它更可能与内存限制有关,但是,仅仅增加它,虽然它会解决问题,但它可能不是正确的解决方案,因为你必须检查为什么单个脚本会分配那么多内存。为了补充你的答案,我又加了一个。