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足够的内存,我仍然得到:
将$factor的值从0.9更改为0.4时,在这种情况下错误消失.在其他情况下0.9是可以??的. 我想知道: 错误的原因是否真的需要gzinflate需要超过未压缩数据空间的两倍?还有其他原因吗? $剩余的确实是应用程序可用的剩余内存吗? 解决方法
这确实是可能的.恕我直言,问题在于memory_get_usage(true).
使用true应该提供更高的内存使用价值,因为应该考虑到所有内容. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |