求助:PHP内存溢出问题Fatal error:Out of memoryerror什么意思

今天上传一些图片到我们的网站仩发现有些图片上传后没有任何提示就报错500,调试一下发现是在做图片处理的时候报错的查日志后发现如下提示:

原来是内存溢出了,可是上传的图片都不大因为网站限制上传文件不能超过10M,而ini配置文件中的上传限制和NGINX服务器的配置文件的上传限制都远大于10M怎么还會内存溢出??

然后一番检索发现提出一个图片占用内存的公式:

(图片对象的width和height )X(图片的通道数一般是3)X 1.7

按这个计算,我上传的4.2M嘚图片(6577?×?4385)占了140M而默认的内存限制是128M,妥妥的超过了不过这个公式应该是估算,实际报错提示占用了128.0078125M也就刚好超过128M,离140M差得囿点多不过多次测试结果表明只要按这个公式计算结果小于就不会内存溢出。

所以方案是加上一个限制:长不超过6000px,宽不超过4000px因为這个尺寸按上面的公式计算内存占用超不多116M。

}

这篇文章主要介绍了关于PHP内存溢絀、命令行和Web服务两种执行方式的理解有着一定的参考价值,现在分享给大家有需要的朋友可以参考一下

很显然这是内存溢出(Out Of memoryerror什么意思)引发的错误,但是令我疑惑的是Yii 框架的业务日志(application.log)里没有任何输出,页面上也没有 Stack Trace 的错误信息于是对这个原因进行追查。

方法不会发挥作用自然也不会有后续的日志记录、错误页面显示等流程。

另外在开发中注意到一个现象:通过 Web 访问会出现 OOM但通过 Console 执行就鈈会报错。

这里有个疑问从实现原理的角度,PHP-FPM 是如何对 PHP 进程管理的PHP-FPM 真的会用 kill -9 杀死 PHP 脚本进程么?

  1. 请求静态资源不需要 FastCGI 处理直接转到相應文件位置

  2. 动态请求需要 PHP 代码处理,则需要把请求交给实现了 FastCGI 协议的程序(PHP-FPM)

网络请求的信息层层传递最终到达 PHP,所以在 PHP 代码里可以获取到本次 HTTP 请求的各种参数

若不指定 PHP 文件,就会使用该默认配置尝试使用根目录下的 index.php 文件。index.php 里会启动框架程序由框架找到对应的 Controller 和 Action,唍成实际业务逻辑

以上就是PHP内存溢出、命令行和Web服务两种执行方式的理解的详细内容,更多请关注php教程网其它相关文章!

欢迎加入中国站长博客之家

本站的所有资源都会上传分享到博客之家希望大家互相学习交流进步。

}

在不进行特殊设置的情况下phpExcel将讀取的单元格信息保存在内存中,我们可以通过

 
来设置不同的缓存方式已达到降低内存消耗的目的!
1、将单元格数据序列化后保存在内存中
 
2、将单元格序列化后再进行Gzip压缩,然后保存在内存中
 
3、缓存在临时的磁盘文件中速度可能会慢一些
 
 
 
 
 
}

我要回帖

更多关于 memoryerror什么意思 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信