Как увеличить таймаут транзакции? Я хочу загрузить видео, но видео большого размера не загружено?
Выдает ошибку The process *** exceeded the timeout of 60 seconds.
Как увеличить таймаут транзакции? Я хочу загрузить видео, но видео большого размера не загружено?
Выдает ошибку The process *** exceeded the timeout of 60 seconds.
Ответы:
Вам нужно изменить некоторые настройки в вашем 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
Вы также должны иметь возможность делать во время выполнения, используя
set_time_limit(100);
http://php.net/manual/en/function.set-time-limit.php
или в вашем vhost-config
php_admin_value max_execution_time 10000
НИЗКОЕ глобальное ограничение времени выполнения в основном является хорошей идеей с точки зрения производительности в не очень надежных приложениях. Таким образом, вы можете разрешить этим сценариям работать дольше, чем это необходимо.
ps: не забывайте о post_max_size и upload_max_filesize (как уже было сказано в первом ответе)
Чтобы завершить ответ Ханнеса.
Вам нужно изменить некоторые настройки в вашем 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, и там указано, где он находится.
Если вы не можете получить доступ к своему php.ini, у вас есть еще два варианта.
Вы можете установить эту строку прямо в вашем файле "name.php", но я не могу найти upload_max_filesize для этой опции:
set_time_limit(0);
Или в ".htaccess"
php_value upload_max_filesize 0
php_value max_execution_time 0
Если то, что вам нужно сделать, характерно только для 1 или 2 страниц, я предлагаю использовать set_time_limit, чтобы это не повлияло на все приложение.
set_time_limit(some_values);
но, конечно, эти 2 значения (post_max_size и upload_max_filesize) подлежат исследованию.
вы также можете установить его через функцию ini_set
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
В дополнение к приведенным выше ответам вы можете использовать set_time_limit()функцию:
http://php.net/manual/en/function.set-time-limit.php
передача 0в качестве аргумента заставит ваш скрипт работать без ограничения по времени.
Если вы используете сервер Microsoft IIS , в дополнение к настройкам php.ini , упомянутым другими, вам может потребоваться увеличить настройки времени ожидания выполнения для приложения PHP FastCGI в диспетчере сервера IIS:
Шаг 1) Откройте диспетчер сервера IIS (обычно в разделе « Диспетчер серверов» в меню «Пуск», затем в меню « Инструменты / Диспетчер информационных служб Интернета (IIS)» ).
Шаг 2) Щелкните основное соединение (не относящееся к конкретному домену).
Шаг 3) В разделе IIS найдите FastCGI Settings (показано ниже).
Шаг 4) В нем щелкните правой кнопкой мыши приложение PHP и выберите « Изменить ...» .
Шаг 5) Проверьте таймауты (показано ниже).
В моем случае таймауты по умолчанию были 70 и 90 секунд; первый из которых вызывал ошибку 500 Internal Server Error в сценариях PHP, которая длилась более 70 секунд.
Я знаю, что вы конкретно спрашиваете о тайм-ауте PHP, но, похоже, никто другой не упомянул, что на веб-сервере также может быть тайм-аут, и он может быть очень похож на тайм-аут PHP.
Итак, если вы пробовали:
И вы проверили с помощью функции 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-des Hit-ini-set/
Сначала проверьте php.iniпуть к файлу phpinfo(); а затем изменил PHP.INIпараметры:
upload_max_filesize = 1000M
memory_limit = 1500M
post_max_size = 1500M
max_execution_time = 30
перезапустил Apache
set_time_limit(0); // safe_mode is off
ini_set('max_execution_time', 500); //500 seconds
Примечание : вы также можете использовать команду для поиска php.iniв Linux
locate `php.ini`
Если вы не можете редактировать php.ini (например, на своем сервере), вы можете попытаться изменить параметры php.ini из своего кода php. Пытаться:
ini_set('max_execution_time', 'NUMBER OF SECONDS TO ALLOW BEFORE TIMEOUT');
Если это не сработает, попробуйте также установить set_time_limit таким же образом, кроме этого, я бы сказал, что ваш единственный вариант - связаться с вашим хостом. Эти настройки нельзя изменить в безопасном режиме.
Проверьте, находитесь ли вы в безопасном режиме - если нет - установите ограничение по времени (локальное значение) на то, что вы хотите:
if(!ini_get('safe_mode')){
echo "safe mode off";
set_time_limit(180);// seconds
phpinfo();// see 'max_execution_time'
}
* Вы не можете установить ограничение по времени, если включен безопасный режим.
необязательно: если вы установили конфигурацию для php.ini, но по-прежнему не можете загрузить
-это функция php для проверки кода ошибки
$error_type = [];
$error_type[0] = "There is no error";
$error_type[1] = "The uploaded file exceeds the upload_max_filesize directive in php.ini.";
$error_type[2] = "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form.";
$error_type[3] = "The uploaded file was only partially uploaded.";
$error_type[4] = "No file was uploaded.";
//$error_type["5"] = "";
$error_type[6] = "Missing a temporary folder. Introduced in PHP 5.0.3.";
$error_type[7] = "Failed to write file to disk. Introduced in PHP 5.1.0.";
$error_type[8] = "A PHP extension stopped the file upload. PHP does not provide a way to ascertain which extension caused the file upload to stop; examining the list of loaded extensions with phpinfo() may help. Introduced in PHP 5.2.0.";
//------------------------------
//--> show msg error.
$status_code = $_FILES["uploadfile"]["error"];
if($status_code != 0){
echo $error_type[$status_code];
exit;
}
Вы также можете установить максимальное время выполнения в своем .htaccessфайле:
php_value max_execution_time 180
Чтобы действительно увеличить лимит времени, я предпочитаю сначала получить текущее значение. set_time_limitне всегда увеличивает срок. Если текущее значение (например, от php.iniили ранее установленное) выше, чем значение, используемое в текущем вызове set_time_limit, оно уменьшится. ограничение по времени!
Так что с таким маленьким помощником?
/**
* @param int $seconds Time in seconds
* @return bool
*/
function increase_time_limit(int $seconds): bool
{
return set_time_limit(max(
ini_get('max_execution_time'), $seconds
));
}
// somewhere else in your code
increase_time_limit(180);
См. Также: Получить max_execution_time в скрипте PHP