CodeIgniter. Скачать Helper. Вопрос использования памяти - PullRequest
1 голос
/ 10 июня 2011

Вопрос об этом помощнике http://codeigniter.com/user_guide/helpers/download_helper.html

Если, например, файл program.exe весит 4 ГБ, потребуется много памяти PHP для чтения и доставки этого файла?

Ответы [ 2 ]

1 голос
/ 10 июня 2011

Да ... это может стать ... плохо ...

file_get_contents считывает все содержимое файла в строку. Для больших файлов это может быть плохо. Я бы посмотрел в readfile . Пожалуйста, помните также - поскольку CI автоматически кэшируется при загрузке представления, это означает, что при чтении файла не будет заметных преимуществ, если он используется в представлении CI. Было бы почти лучше справиться с этим с помощью внешнего сценария или путем вывода непосредственно из контроллера и вообще не вызывать представление.

1 голос
/ 10 июня 2011
Функция

force_download просто устанавливает правильные заголовки HTTP, чтобы клиентский браузер загружал файл. Таким образом, файл не откроется, просто передайте его URL клиенту.

Проверьте исходный код помощника, если вам нужно: https://bitbucket.org/ellislab/codeigniter-reactor/src/31b5c1dcf2ed/system/helpers/download_helper.php

Редактировать: Я бы предложил создать собственную версию помощника, и вместо использования strlen для получения размера файла используйте функцию php filesize, которая принимает только файл name в качестве аргумента и возвращает размер в байтах.

Подробнее, на http://www.php.net/manual/en/function.filesize.php

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...