【发布时间】:2016-10-27 07:00:03
【问题描述】:
我遇到了一个烦人的问题,这就是这个主题的标题。我正在尝试读取 MP4 格式文件(即 69,5 MB。总共 72 899 060 字节),但一直收到此错误。在阅读此文件之前,我使用函数memory_get_usage() 请求内存的当前使用情况。提到总规模为 128 MB(这是我在 PHP.ini 中的 memory_limit)中仅使用了 3 MB。
这是我当前收到的确切错误消息:
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 72900608 bytes)
用于“读取”此文件的函数是file_get_contents(),它只是检索给定路径/文件的内容。
代码示例/“功能”:
echo memory_get_usage() . "<br/>";
$tmpItem = 'mypath/tofile/myfile.mp4';
echo file_get_contents($tmpItem);
echo memory_get_usage() . "<br/>";
我不明白我们是如何从使用 3 MB 增加到最终需要 198 MB 的。有什么想法吗?
- 附加:我还尝试过 fopen()、fread()、fclose 和 readfile()。遗憾的是,所有这些都具有上述相同的效果。
【问题讨论】:
-
您正在尝试使用 : file_get_contents 回显文件,很明显这会导致内存大小耗尽。因为这不是您播放视频文件的方式
-
我不想播放视频文件。我正在尝试获取它的内容。
-
不管怎样,你不应该回显它,把它写到一个文件中。
-
@ArshSingh 我希望该文件最终将其内容压缩到一个 zip 文件中。所以这就是我试图获取文件内容的原因。
-
@ArshSingh 首先将其分配给一个变量,然后回显该变量,其值将产生相同的结果。刚刚测试过了。
标签: php file memory file-get-contents readfile