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

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

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, ограничивающих процесс загрузки:

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

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

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

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

<?php phpinfo(); ?>

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

Вы можете проверить в php.ini (настройка php) на вашем локальном хосте или хостинге.

в настройке конфигурации:

  • max_input_time
  • max_execution_time
  • memory_limit
  • post_max_size
  • max_file_uploads
  • upload_max_filesize

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

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

Если вы используете 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);      
}
Другие вопросы по тегам