笨。下载助手。内存使用问题

时间:2011-06-10 03:14:23

标签: php codeigniter

关于此助手的问题http://codeigniter.com/user_guide/helpers/download_helper.html

例如,如果program.exe的权重为4 GB,那么读取和传送该文件需要大量的PHP内存吗?

$data = file_get_contents("/path/to/program.exe"); // Read the file's contents
$name = 'software.exe';

force_download($name, $data);

2 个答案:

答案 0 :(得分:1)

force_download函数只是设置正确的HTTP标头以使客户端的浏览器下载文件。因此,它不会打开文件,只是将其URL传递给客户端。

如果需要,请检查帮助程序源代码:https://bitbucket.org/ellislab/codeigniter-reactor/src/31b5c1dcf2ed/system/helpers/download_helper.php

编辑:我会创建自己的帮助程序版本,而不是使用strlen来获取文件大小,请使用php函数filesize,它只接受文件名作为参数,并以字节为单位返回大小。

更多信息,请http://www.php.net/manual/en/function.filesize.php

答案 1 :(得分:1)

是的......那可能会......糟糕......

file_get_contents将文件的全部内容读入字符串。对于大文件,这可能会变得很糟糕。我会调查readfile。请记住 - 因为CI在加载视图时会自动缓存,这意味着如果在CI视图中使用它,则readfile将没有明显的好处。使用外部脚本或直接从控制器输出并且根本不调用视图几乎会更好。