Як збільшити час очікування транзакції? Я хочу завантажити відео, але відео великого розміру не завантажено?
Це видає помилку 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, як відповідь вище від Hannes, або навіть встановити його в .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 (зазвичай під диспетчером серверів у меню «Пуск», потім « Інструменти / Менеджер інформаційних служб Інтернету» ).
Крок 2) Клацніть на основному підключенні (не характерному для певного домену).
Крок 3) У розділі IIS знайдіть налаштування FastCGI (показано нижче).
Крок 4) У цьому, клацніть правою кнопкою миші додаток PHP і виберіть Edit ... .
Крок 5) Перевірте тайм-аути (показано нижче).
У моєму випадку за замовчуванням час очікування тут був 70 і 90 секунд; перший з яких викликав 500 внутрішніх помилок сервера на 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-despite-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-скрипті