Подтвердить что ты не робот

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

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

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

4b9b3361

Ответ 2

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

PHP

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

Apache

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

Вероятно, есть что-то большее.

Ответ 3

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

Ответ 4

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

  • upload_max_filesize
  • post_max_size
  • memory_limit
  • time_limit

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

Ответ 5

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

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

Ответ 6

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

Ответ 7

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

post_max_size
 upload_max_filesize  memory_limit

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

Ответ 8

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

Ответ 9

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

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

max_execution_time = 1800
max_input_time = -1
post_max_size = 100M
upload_max_filesize = 100M
memory_limit = 256M

Ответ 10

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

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

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

Ответ 11

Это как раз решение вашей проблемы, Sserver перерыв в ожидании HTTP-запроса от клиента. Это означает, что вы отправляете запрос с https://на https://, и браузер сообщает, что ожидает http-запрос, поэтому вы должны отправить запрос с https://на http://. В любом случае это решение работает.

Ответ 12

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

примечание: - изменить по вашему выбору upload_max_filesize: post_max_size

это поможет