【发布时间】:2017-07-31 07:54:27
【问题描述】:
我试图通过在实际发生之前确定它是否会发生来避免内存耗尽的致命错误。尽管我的 PHP 安装的内存限制为 128M,但允许的大小为 134217728 字节;我猜 PHP 在这里提供了一些空间来解释额外的字节。无论如何,我试图读取的实际文件大小是 134171737,小于 134217728。但是 PHP 说它试图分配 134179929。
这些数字似乎是任意的。如果(通过比较即mem_size > file_size)这些数字实际上并不准确,我如何检查将文件读取到变量是否会耗尽内存?
致命错误:第 159 行 C:\xampp\htdocs\backup\vendor\cake\File.php 中允许的内存大小为 134217728 字节已用尽(尝试分配 134179929 字节)
注意:我知道我可以发送readfile。我只是很好奇在这种情况下如何避免这样的错误。
【问题讨论】:
-
不知道你在问什么
-
如果我将文件读取到变量并回显该变量,并且如果文件大小大于内存限制,我可以在回显变量之前检查它,从而避免内存耗尽错误。但是由于文件大小似乎不能确定分配的内存,所以我卡住了。
-
您似乎已经知道答案 - 首先使用
filesize()检查文件大小,确保为运行时/代码的其他部分需要的内存留出适当的填充...跨度> -
正是我的观点:如何确定适当的填充?因此,为什么我说这些数字似乎是武断的。因为我已经读过 file_get_contents 使用了某种输出缓冲区,我认为这会导致额外的字节数,但我似乎找不到任何关于如何确定这些额外字节对于文件 n 大小的大小的文档。 .
-
你必须首先将整个文件读入内存吗?
标签: php error-handling out-of-memory