没有不值得去解决的问题,也没有不值得去学习的技术!

基于 Yii 2 的 HTTP 客户端扩展,上传文件,PHP Fatal Error ‘yii\base\ErrorException’ with message ‘Allowed memory size of 2147483648 bytes exhausted (tried to allocate 1084897244 bytes)’ 的分析解决

上传的文件,其大小为 50.5 MB。在本地环境中,成功上传此文件,内存占用:164.813 MB,耗费时间:43,244 ms。
1、PHP Fatal Error ‘yii\base\ErrorException’ with message ‘Allowed memory size of 2147483648 bytes exhausted (tried to allocate 1084897244 bytes)’。如图1
PHP Fatal Error 'yii\base\ErrorException' with message 'Allowed memory size of 2147483648 bytes exhausted (tried to allocate 1084897244 bytes)'。
图1


The command "'/usr/local/php/bin/php' '/mcloud/www/channel-pub-api/yii' 'upload-asset-queue/exec' '45' '7200' '1' '1010' '--verbose=1' '--color=0'" failed.

Exit Code: 255(Unknown error)

Working directory: /

Output:
================
2020-12-04 14:31:27 [45] common\jobs\UploadAssetJob (attempt: 1, pid: 1010) - Started


Error Output:
================
PHP Fatal Error 'yii\base\ErrorException' with message 'Allowed memory size of 2147483648 bytes exhausted (tried to allocate 1084897244 bytes)'

in /mcloud/www/channel-pub-api/vendor/yiisoft/yii2-httpclient/src/Request.php:381

Stack trace:
#0 [internal function]: yii\base\ErrorHandler->handleFatalError()
#1 {main}



2、下载的文件:https://webtv-test.oss-cn-beijing.aliyuncs.com/rmhadmin/vod/2020/12/02/b73b9e8c3796447494a9dbe6dc66e2ad/b73b9e8c3796447494a9dbe6dc66e2ad_h264_1200k_mp4.mp4 。其大小为 1.44 GB。在本地环境中,成功下载此文件,内存占用:6.376 MB,耗费时间:916,308 ms。如图2
下载的文件:https://webtv-test.oss-cn-beijing.aliyuncs.com/rmhadmin/vod/2020/12/02/b73b9e8c3796447494a9dbe6dc66e2ad/b73b9e8c3796447494a9dbe6dc66e2ad_h264_1200k_mp4.mp4 。其大小为 1.44 GB。在本地环境中,成功下载此文件,内存占用:6.376 MB,耗费时间:916,308 ms。
图2
3、上传的文件,其大小为 50.5 MB。在本地环境中,成功上传此文件,内存占用:164.813 MB,耗费时间:43,244 ms。上传的文件,其大小为 117 MB。在本地环境中,成功上传此文件,内存占用:362.813 MB,耗费时间:97,774 ms。可以得出结论:内存占用大约为文件大小的 3倍。如图3、图4
上传的文件,其大小为 50.5 MB。在本地环境中,成功上传此文件,内存占用:164.813 MB,耗费时间:43,244 ms。
图3
 
上传的文件,其大小为 117 MB。在本地环境中,成功上传此文件,内存占用:362.813 MB,耗费时间:97,774 ms。可以得出结论:内存占用大约为文件大小的 3倍。
图4
4、内存的占用优化,暂无更优的方案。因此,最后通过修改 php.ini 的资源限制的配置选项。memory_limit = 4096M。设置了一个脚本允许分配的最大内存量。上传的文件,其大小为 1.01 GB。未再报错。 5、但是当其上传的文件大小为 1.44 GB 时,仍然报错。memory_limit = 6144M。未再报错。


The command "'/usr/local/php/bin/php' '/mcloud/www/channel-pub-api/yii' 'upload-asset-queue/exec' '68' '7200' '1' '1012' '--verbose=1' '--color=0'" failed.

Exit Code: 255(Unknown error)

Working directory: /

Output:
================
2020-12-07 17:54:21 [68] common\jobs\UploadAssetJob (attempt: 1, pid: 1012) - Started


Error Output:
================
PHP Fatal Error 'yii\base\ErrorException' with message 'Allowed memory size of 4294967296 bytes exhausted (tried to allocate 1551797080 bytes)'

in /mcloud/www/channel-pub-api/vendor/yiisoft/yii2-httpclient/src/Request.php:391

Stack trace:
#0 [internal function]: yii\base\ErrorHandler->handleFatalError()
#1 {main}



PHP / Laravel / Yii2 老项目维护与长期技术支持

如果你的 PHP / Laravel / Yii2 项目已经上线,但遇到原开发离职、Bug 长期无人修复、接口不稳定、性能下降、代码难以接手等问题,可以联系我做一次远程技术排查。

适合以下情况:
✅ 老旧 PHP 系统无人维护
✅ Laravel / Yii2 项目 Bug 修复
✅ 后台管理系统小功能迭代
✅ RESTful API 接口排查
✅ MySQL / Redis / Nginx 性能问题
✅ 长期远程兼职维护

可先从一次小问题开始:
✅ 线上报错排查
✅ 接口异常分析
✅ 慢查询与性能瓶颈定位
✅ 代码结构初步评估
✅ 部署环境与日志检查

如需咨询,请联系我,并注明:PHP 维护咨询

联系方式:
Telegram:@shuijingwan
微信:13980074657
邮箱:shuijingwanwq@gmail.com

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理