CodeIgniter.下载帮助程序.内存使用问题


CodeIgniter. Download Helper. Memory usage question

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

例如,如果program.exe的重量为4GB,那么读取和传递该文件会占用大量PHP内存吗?

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

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

是的。。。可能会。。。令人不快的

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