Как рассчитать точные пределы загрузки PHP
Максимальный размер загрузки в php зависит от количества настроек. вот они, как положено в файл виртуальных хостов Apache:
php_admin_flag file_uploads on
php_admin_value memory_limit 560M
php_admin_value post_max_size 530M
php_admin_value upload_max_filesize 500M
php_admin_value max_execution_time 0
php_admin_value max_input_time 0
пожалуйста, игнорируйте значения выше, но они позволяют мне разрешать загрузку около 150-200M. memory_limit, post_max_size и upload_max_filesize имеют некоторые определенные соотношения между собой. я полагаю, что
upload_max_filesize < post_max_size < memory_limit
Тем не менее, я не знаю, как рассчитать точные размеры. например, какими должны быть значения этих настроек, чтобы разрешить загрузку файла ровно 100M? Из того, что я собрал в Интернете, есть ряд факторов, которые определяют эти соотношения, но я не смог найти никаких ссылок, что это за факторы.
Я использую систему Linux.
1 ответ
Ограничение памяти не зависит от размера POST, который вы загружаете файлы. Загруженные файлы будут проанализированы PHP напрямую и помещены во временную папку.
upload_max_filesize
должно быть 100M и ваш post_max_size
должно быть 100M + накладные расходы на многочастное кодирование. Накладные расходы низкие, поскольку они двоично закодированы с границей. Даже с 101MB это будет работать.
Теперь он может все еще сбить ваш скрипт, если вы затем сделаете $file = file_get_contents('path/to/uploaded/file.ext');
потому что в этом случае memory_limit
будет удар.