Может ли время загрузки файлов истекать в PHP?


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

Спасибо за вашу помощь!

 32
Author: Ben McRae, 2009-02-23

10 answers

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

  1. максимальное время ввода ( не max_execution_time!)
  2. upload_max_filesize размер файла
  3. пост_макс_размер

И, возможно,

  1. memory_limit_лимитный
 53
Author: Ionuț G. Stan, 2009-02-23 16:17:10

Существуют некоторые директивы конфигурации, которые могут привести к сбою больших загрузок, если их значения слишком малы:

PHP

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

Апач

  • TimeOut   Количество времени, в течение которого сервер будет ждать определенных событий, прежде чем отклонить запрос
  • LimitRequestBody   Ограничивает общий размер тела HTTP-запроса, отправленного от клиента

Вероятно, есть еще кое-что, кроме этого.

 28
Author: Gumbo, 2013-09-09 21:30:06

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

 4
Author: Ronny Vindenes, 2009-02-23 16:24:18

При загрузке очень больших файлов необходимо изменить 4 переменные конфигурации:

  • upload_max_filesize
  • post_max_size
  • memory_limit
  • time_limit

Ограничение по времени может быть увеличено во время выполнения с помощью set_time_limit().

 3
Author: vartec, 2009-02-23 16:20:48

По умолчанию сценарию разрешено запускаться в течение примерно 30 секунд. Вы можете использовать функцию set_time_limit(), чтобы изменить это. Кроме того, если вашему пользователю потребуется загрузить большие файлы, вам потребуется изменить значения post_max_size и/или upload_max_filesize в вашем файле php.ini.

Кроме того, если вы хотите просто увеличить свой лимит времени ожидания глобально, вы можете изменить максимальное время выполнения в php.ini.

 2
Author: Beep beep, 2009-02-23 16:13:19

Да, это правда. Загрузка файлов осуществляется с помощью запроса POST, и запросы, как правило, зависят от времени ожидания. Вы должны иметь возможность перенастроить свою среду для более длительного времени ожидания запроса.

 1
Author: Ates Goral, 2009-02-23 16:12:23

Проблемы могут возникнуть не только из-за тайм-аутов. Существуют некоторые ограничения на максимальный размер файла, который может быть загружен. Эти ограничения могут быть изменены в файле php.ini:

Пост_макс_размер
upload_max_filesize размер файла memory_limit

ограничение памяти

Проверьте http://uk.php.net/ini.core подробнее.

 1
Author: macleojw, 2009-02-23 16:17:19

Мой ответ не имеет прямого отношения к вашему первоначальному вопросу, но если у вас есть балансировщик нагрузки обратного прокси-сервера перед вашим PHP-скриптом, балансировщик нагрузки может приостановить или заблокировать большие загрузки. Всегда проверяйте конфигурацию вашего балансировщика нагрузки, если вы поддерживаете загрузку файлов. Как и в PHP, в большинстве балансировщиков нагрузки настройки по умолчанию для загрузки довольно малы.

 1
Author: Cory R. King, 2009-03-29 14:29:54

Я смог решить эту проблему, используя следующие настройки, вы могли бы использовать разные значения, но вы поняли идею:

Для моего сервера я помещаю эти строки в файл ".user.ini" в каталоге скрипта, ваш сервер может искать другой файл, если вы введете phpinfo ('user_ini.filename') на сервере, он выдаст файл, в который вам нужно поместить ваши значения

max_execution_time = 1800
max_input_time = -1
post_max_size = 100M
upload_max_filesize = 100M
memory_limit = 256M
 1
Author: Jim B, 2013-05-13 16:01:07

Если изменение любого из вышеперечисленных параметров, по-видимому, не имеет никакого значения, возможно, что где-то в html-форме содержится имя MAX_FILE_SIZE в качестве скрытого поля.

<input type="hidden" name="MAX_FILE_SIZE" value="10000000">

В приведенном выше примере любой файл размером более 10 МБ не будет загружен.

 0
Author: David Robertson, 2017-02-25 19:46:37