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);
}