Как увеличить тайм-аут выполнения в php? - PullRequest
83 голосов
/ 30 сентября 2010

Как увеличить тайм-аут транзакции? Я хочу загрузить видео, но видео большого размера не загружено?

выдает ошибку The process *** exceeded the timeout of 60 seconds.

Ответы [ 11 ]

104 голосов
/ 30 сентября 2010

Вам нужно изменить некоторые настройки в вашем php.ini:

upload_max_filesize = 2M 
;or whatever size you want

max_execution_time = 60
; also, higher if you must - sets the maximum time in seconds

Если ваш PHP.ini находится в зависимости от вашей среды, больше информации: http://php.net/manual/en/ini.list.php

48 голосов
/ 30 сентября 2010

Вы должны быть в состоянии сделать во время выполнения, также используя

set_time_limit(100);

http://php.net/manual/en/function.set-time-limit.php

или в вашем vhost-config

php_admin_value max_execution_time 10000

Наличие глобального ограничения времени выполнения, которое является НИЗКИМ, в основном является хорошей идеей по причинам производительности для не столь надежных приложений. Поэтому вы можете разрешить запускать только те сценарии, которые должны выполняться дольше.

p.s .: Не забывайте о post_max_size и upload_max_filesize (как уже сказал первый ответ)

17 голосов
/ 17 декабря 2014

Чтобы завершить ответ Ханнеса.

Вам нужно изменить некоторые настройки в вашем php.ini:

upload_max_filesize = 2M 
;or whatever size you want

max_execution_time = 60
; also, higher if you must

Если кто-то хочет поставить неограниченное количество (я не знаю почему, но если вы хотите), вы можете установить двойное значение 0:

Вам нужно изменить некоторые настройки в вашем php.ini:

upload_max_filesize = 0 

max_execution_time = 0

И если вы не знаете, где находится ваш php.ini. Вы можете сделать файл "name.php" на вашем сервере и поместить:

<?php phpinfo(); ?>

А на вашем сайте вы можете увидеть конфигурацию вашего php.ini и там помечено, где это.

Изменить 9 января 2015 года:

Если вы не можете получить доступ к php.ini, у вас есть еще два варианта.

Вы можете установить эту строку непосредственно в вашем файле "name.php", но я не могу найти для upload_max_filesize для этой опции:

set_time_limit(0);

Или в ".htaccess"

php_value upload_max_filesize 0
php_value max_execution_time 0
7 голосов
/ 30 сентября 2010

если то, что вам нужно сделать, относится только к 1 или 2 страницам, я предлагаю использовать set_time_limit , чтобы это не повлияло на все приложение.

set_time_limit(some_values);

но, конечно, эти 2 значения (post_max_size & upload_max_filesize) подлежат расследованию.

вы можете установить его с помощью ini_set function

ini_set('post_max_size','20M');
ini_set('upload_max_filesize','2M');

или непосредственно в файле php.ini, как ответ Ханнеса выше, или даже установите его в .htaccess, как показано ниже

php_value upload_max_filesize 2M
php_value post_max_size 20M
4 голосов
/ 30 сентября 2010

В дополнение к ответам выше, вы можете использовать функцию set_time_limit():

http://php.net/manual/en/function.set-time-limit.php

, передавая 0 в качестве аргумента, чтобы ваш скрипт работал без ограничения по времени.

3 голосов
/ 26 сентября 2016

У вас была опечатка: ini_set ('max_input_time', '200M') - набор значений должен быть int, например, ini_set ('max_input_time', '200')

2 голосов
/ 23 октября 2018

Если вы используете сервер Microsoft IIS , в дополнение к настройкам php.ini , упомянутым другими, вам может потребоваться увеличить настройки времени ожидания выполнения для PHP FastCGIприложение в диспетчере сервера IIS:

Шаг 1) Откройте диспетчер сервера IIS (обычно в разделе «1007» * Диспетчер сервера в меню «Пуск», затем Инструменты / ИнтернетДиспетчер информационных служб (IIS) ).

Шаг 2) Щелкните основное соединение (не относится к какому-либо конкретному домену).

Шаг 3) Под IIS раздел, найдите Настройки FastCGI (показано ниже).

enter image description here

Шаг 4) В нем щелкните правой кнопкой мыши приложение PHPи выберите Изменить ... .

Шаг 5) Проверьте тайм-ауты (как показано ниже).

enter image description here

В моем случае таймауты по умолчанию здесь составляли 70 и 90 секунд;первый из которых вызывал 500 внутреннюю ошибку сервера в сценариях PHP, которая занимала более 70 секунд.

2 голосов
/ 09 апреля 2018

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

Итак, если вы попытались:

  1. Увеличение времени ожидания в php.ini путем добавления строки: max_execution_time = {количество секунд, т. Е. 60 в течение одной минуты}
  2. Увеличение времени ожидания всам ваш скрипт, добавив: ini_set ('max_execution_time', '{количество секунд, т.е. 60 в течение одной минуты}');

И вы проверили с помощью функции phpinfo (), что max_execution_time действительно имеет значениеувеличится, тогда вы можете попробовать добавить это в .htaccess, чтобы убедиться, что у самого Apache нет времени ожидания:

RewriteRule .* - [E=noabort:1]
RewriteRule .* - [E=noconntimeout:1]

Более подробная информация здесь: https://www.antropy.co.uk/blog/php-script-keeps-timing-out-despite-ini-set/

1 голос
/ 28 февраля 2018

Сначала проверьте путь к файлу php.ini с помощью phpinfo (); а затем изменил параметры PHP.INI:

upload_max_filesize = 1000M
memory_limit = 1500M
post_max_size = 1500M
max_execution_time = 30

restarted Apache

set_time_limit (0); // safe_mode выключен

ini_set ('max_execution_time', 500); // 500 секунд

Примечание : вы также можете использовать команду для поиска php.ini в linux

locate php.ini
1 голос
/ 14 сентября 2017

Проверьте, если вы находитесь в безопасном режиме - если нет - установите ограничение по времени (локальное значение) на то, что вы хотите:

if(!ini_get('safe_mode')){

    echo "safe mode off";
    set_time_limit(180);// seconds

    phpinfo();// see 'max_execution_time'
}

* Вы не можете установить ограничение по времени таким образом, если безопасный режим включен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...