基于 Yii 2 的 HTTP 客户端扩展,上传文件,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

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}

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/250565.html

(0)
上一篇 2022年4月30日 00:00
下一篇 2022年4月30日 00:01

相关推荐

发表回复

登录后才能评论