Найти оптимальный баланс memory_limit и (upload_max_filesize & post_max_size) - PullRequest
2 голосов
/ 07 июля 2011

Я загружаю файлы и не могу найти ответ на этот вопрос. Иногда загрузка моего файла завершается с ошибкой move_uploaded_file(), поэтому мне сказали, что это может быть проблема с памятью. К сожалению, нет доступных документов, которые я мог бы найти, чтобы ответить на этот вопрос.

Файл, который я загружаю, составляет 400 МБ, и я установил upload_max_filesize и post_max_size на 500 МБ. max_execution_time и max_input_time установлены на 60000 для целей тестирования. Мой memory_limit установлен по умолчанию 128 МБ. Должно ли это быть изменено? Как рассчитать оптимальный баланс memory_limit против upload_max_filesize и post_max_size, скажем, для файла 400 МБ?

1 Ответ

3 голосов
/ 07 июля 2011

Если загрузка не удалась, вы даже не должны пытаться сделать файл move_uploaded_file.Правильный метод обработки загрузки:

if ($_FILES['yourfile']['error'] !== UPLOAD_ERR_OK) {
   ... upload failed, bail out
   die("Failed upload");
}
// got here, upload must've worked
move_uploaded_file(...);

Коды ошибок подробно описаны здесь и сообщат вам, был ли файл слишком большим для обработки из-за настроек PHP.

Что касается самих настроек PHP.Ваш post_max_size должен иметь максимально допустимый размер файла, плюс любые другие данные, которые вы отправляете вместе с загрузкой файла.memory_limit должен быть больше, чем максимальный размер файла, плюс дополнительный, чтобы учесть издержки скрипта.Ограничения по времени выполнения PHP не вступают в игру для загрузки, так как таймеры сценария не запускаются до ПОСЛЕ завершения загрузки.

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