PHP - максимальный общий размер загрузки?


У меня есть веб-страница php с 15 полями. Пользователь будет использовать его для загрузки изображений. Я проверил это, загрузив 15 изображений jpg, каждое около 2 м, без каких-либо проблем. В день запуска я буду перемещать эту веб-страницу в другую среду общего хостинга Linux (до сих пор не знаю, в какую). Существуют ли некоторые среды веб-хостинга, которые ограничивают размер общей загрузки в одном http-запросе?

9 6

9 ответов:

Да. Есть (насколько я помню) три или около того настройки конфигурации, которые будут влиять на ограничения размера загрузки:

  • upload_max_filesize, который устанавливает верхний предел размера загружаемых файлов
  • post_max_size, что ограничивает общий размер опубликованных данных, включая файловые данные
  • max_input_time, что ограничивает время, в течение которого скрипту разрешено обрабатывать входные данные, включая опубликованные значения

upload_max_filesize Есть ли ограничение на каждый однако max_post_size является верхним пределом для всего запроса, который включает все загруженные файлы.

В разных средах размещения эти значения будут установлены по-разному, что может повлиять на ваши возможности при развертывании.

Ограничения на загрузку устанавливаются через php ini. Вы можете попробовать получить их так:

$post_max_size = ini_get('post_max_size');
$upload_max_filesize = ini_get('upload_max_filesize');

Это настройка в php.ини. Вы можете посмотреть в выводе php info поле с надписью "upload_max_filesize". Чтобы получить страницу PHP info, создайте файл php со следующим кодом:

<?php phpinfo(); ?>

Этот пост на php.net дает вам пример кода, чтобы получить эту информацию, а остальная часть страницы является сокровищницей параметров конфигурации php.

Есть куча настроек PHP, ограничивающих процесс загрузки:

  • file_uploads
  • upload_max_filesize
  • max_input_time
  • memory_limit
  • max_execution_time
  • post_max_size

Я бы предложил прочитать эту страницу: http://www.radinks.com/upload/config.php

Хотя это правда, что многие из них не ограничивают размер загрузки, они накладывают ограничение на процесс загрузки - например, если лимит памяти слишком мал, то у вас будут проблемы загрузка больших файлов, которые должны оставаться в памяти в течение небольшого периода времени.

Это было бы необычно, но, конечно, свяжитесь с любой хостинговой компанией, которую вы выберете. Если бы существовал лимит, то он наверняка был бы выше 30 МБ.

Php.директива ini "post_max_size" должна ограничивать количество данных, которые вы можете отправить в одном сообщении. если вы разместите 15 изображений в одном посте, я уверен, что это все еще считается одним постом. Поэтому было бы неплохо проверить это значение, прежде чем выходить в эфир.

Если вы используете nginx, то убедитесь, что у вас есть следующее:

server {
...
     client_max_body_size 100M;
....
}

Здесь:

max_execution_time
max_input_time
memory_limit
post_max_size
upload_max_filesize
max_file_uploads 

Я видел лучшее решение здесь до сих пор, и это код:

/**
 * Returns the maximally uploadable file size in megabytes
 *
 * @return  string
 */
function getMaxUploadSize()
{
   $max_upload    = (int)(ini_get('upload_max_filesize'));
   $max_post      = (int)(ini_get('post_max_size'));
   $memory_limit  = (int)(ini_get('memory_limit'));
   return min($max_upload, $max_post, $memory_limit);      
}