加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – gzinflate:max.空间,以避免内存不足?

发布时间:2020-12-13 22:47:47 所属栏目:PHP教程 来源:网络整理
导读:当用gzinflate解压缩时,我发现 – 在某些情况下 环境 – 以下代码导致内存不足错误.在32位 Linux( Amazon Linux AMI EC2)上使用PHP 5.3.20进行测试. $memoryLimit = Misc::bytesFromShorthand(ini_get('memory_limit')); // 256MB$memoryUsage = memory_get_
当用gzinflate解压缩时,我发现 – 在某些情况下
环境 – 以下代码导致内存不足错误.在32位 Linux( Amazon Linux AMI EC2)上使用PHP 5.3.20进行测试.

$memoryLimit = Misc::bytesFromShorthand(ini_get('memory_limit')); // 256MB
$memoryUsage = memory_get_usage(); // 2MB in actual test case
$remaining = $memoryLimit - $memoryUsage;
$factor = 0.9;
$maxUncompressedSize = max(1,floor($factor * $remaining) - 1000);
$uncompressedData = gzinflate($compressedData,$maxUncompressedSize);

虽然,我保守地计算了$maxUncompressedSize的大小,希望给gzinflate足够的内存,我仍然得到:

Fatal error: Allowed memory size of 268435456 bytes exhausted (tried to allocate 266143484 bytes) in foo.php on line 123

将$factor的值从0.9更改为0.4时,在这种情况下错误消失.在其他情况下0.9是可以??的.

我想知道:

错误的原因是否真的需要gzinflate需要超过未压缩数据空间的两倍?还有其他原因吗? $剩余的确实是应用程序可用的剩余内存吗?

解决方法

这确实是可能的.恕我直言,问题在于memory_get_usage(true).

使用true应该提供更高的内存使用价值,因为应该考虑到所有内容.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读