Назад | Перейти на главную страницу

PHP max_execution_time, что лучше всего подходит для больших загружаемых файлов

У меня установлен WordPress, и я использую веб-форму для загрузки изображений на свой веб-сайт. Веб-форма, позволяющая конечному пользователю загружать более одного файла за раз.

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

Неустранимая ошибка: превышено максимальное время выполнения 30 секунд в / home /СЧЕТ/public_html/wp-includes/media.php в строке 258

Так какой же тюнинг лучше всего max_execution_time. Как видите, это 30 секунд. Есть идеи, пожалуйста?

Если я установлю очень высокое значение (например, 600), это повлияет на производительность моего сервера?

Примечание: пользователь должен был попытаться загрузить два файла размером 2,96 МБ и 2,9 МБ.

С уважением, Мерианос Никос

По пути в сообщении об ошибке я предполагаю, что это система Unix / Linux (MSWindows обрабатывает тайм-аут совсем иначе).

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

В PHP есть тайм-аут, чтобы определить, сколько времени он должен потратить на получение данных с веб-сервера - max_input_time - и это было сообщено который когда это превышено, он сообщает max_execution_time превышено!.

Итак ... предполагая сеть с нулевой задержкой ...

  • 00:00 пользователь начинает загрузку, запускаются таймауты apache (но будут сбрасываться при поступлении новых пакетов)

  • 00:10 получение запроса завершено Apache, запрос передан PHP, часы max_input_time запущены

  • 00:11 PHP прочитал весь ввод, часы max_input_time остановлены, часы max_execution_time запущены, скрипт выполняется

Теперь, поскольку в системе Unix часы max_execution только тики, когда PHP выполняется, проблема заключается в производительности PHP / производительности сценария PHP.

Да, вы можете увеличить максимальное время выполнения, не оказывая большого влияния на что-либо другое (хотя установка его с помощью ini_set () / set_time_limit () для каждого сценария более аккуратна, чем глобальная настройка). Но убедитесь, что вы используете кеш кода операции, и если скрипт php пытается проанализировать данные, остерегайтесь проблем с данными / парсером.

Есть две цели max_execution_time настройка:

  1. Защита от плохого кода, такого как бесконечные циклы.
  2. Предотвращение расточительной обработки PHP после того, как предполагается, что клиент уже отказался.

Установка высокого значения повлияет только на производительность если у вас есть скрипты, которые выполняют одно из двух перечисленных выше действий.

Проверьте свои журналы ошибок, чтобы узнать, как часто (если вообще) вы превышаете это время, прежде чем изменять его.

Вы можете выборочно изменить его, используя ini_set() в коде PHP, который требует больше времени.

Как говорит @Ladadadada, max_execution_time установка не будет влияют на производительность вашего сервера. В противном случае, если вы не хотите устанавливать слишком высокое значение, я лично обращаюсь к upload_max_filesize настройка.

Зная полосу пропускания вашего сервера и протестировав несколько загрузок, вы сможете определить среднюю скорость загрузки (уменьшите эту скорость, чтобы позаботиться о пользователях с низкой пропускной способностью). Это поможет установить разумный max_execution_time стоимость.