О приложении
Я работаю над приложением электронной коммерции на PHP.Чтобы обеспечить безопасность URL-адресов, ссылки на загрузку продуктов сохраняются за PHP.Существует файл, скажем download.php, который принимает несколько параметров через GET и проверяет их по базе данных.Если все идет хорошо, он обрабатывает файл с помощью функции readfile () в PHP.
О проблеме
Теперь возникает проблема, когда файл для передачи в readfile () больше, чем ограничение памяти, установленное в php.ini Поскольку это приложение будет использоваться многими пользователями на разделяемом хостинге, мы не можем ретранслировать изменения настроек php.ini.
В наших попытках найти обходные пути я сначала подумал, что мы можем пойти на вызовы fread () вцикл while, но кажется, что это создаст проблемы, а также выделено здесь Надежная загрузка больших файлов в PHP
Поэтому мой лучший вариант - определить / проверить, поддерживает ли сервер X-Accel-Redirect (в случае Nginx) / X-Sendfile (в случае Apache)
Если сервер поддерживает X-Accel-Redirect / X-Sendfile, я могу использовать их, а в блоке else я могузаставить системного администратора знать об ограничении памяти, установленном php.ini
В идеале я хочу использовать поддержку на стороне сервера, такую как X-Accel-Redirect / X-Sendfile, где это возможно, и если это не сработает - я былайк иметь запасной код для чтения файлов без readfile ().
Я пока не уверен, насколько readfile () и fread () в цикле while отличаются, но кажется, что цикл создаст проблему, опять же, как это было предложено в Надежная загрузка больших файлов в PHP
Надеюсь получить помощь, предложения, коды, руководство.
Спасибо за чтение.