Збільшити час виконання сценарію. Збільшення часу виконання PHP скрипта з Nginx. Навіщо виміри у програмуванні

Якщо у вас є великий проект або сервер з обмеженими ресурсами, то Ви часто бачитимете «504 Gateway Time-out» помилку.

Ви можете виконати наведені нижче кроки, щоб збільшити значення тайм-ауту. У PHP за замовчуванням 30 секунд.

Зміни у php.ini

Якщо ви бажаєте змінити максимальний час виконання для PHP скриптів з 30 секунд (за замовчуванням) до 300 секунд.

Nano /etc/php5/fpm/php.ini

Встановіть…

Max_execution_time = 300

В Apache PHP працює як модуль, цих змін буде достатньо. Але в нашому випадку ми маємо зробити зміни ще в кількох місцях.

Зміни у PHP-FPM

Це потрібно, якщо ви розкоментували параметр request_terminate_timeout раніше. За промовчанням він закоментований і бере значення max_execution_time found з php.ini

Відкриваємо…

Nano /etc/php5/fpm/pool.d/www.conf

Встановлюємо…

Request_terminate_timeout = 300

Зміни у Nginx Config

Збільшення time limit для одного домену example.com

Nano /etc/nginx/sites-available/example.com location ~ \.php$ ( include /etc/nginx/fastcgi_params; fastcgi_pass 127.0.0.1:9000; fastcgi_read_timeout 300; }

Якщо Ви хочете збільшити time-limit для всіх доменів на сервері, Ви можете відредагувати головний конфігураційний файл nginx.conf:

Nano /etc/nginx/nginx.conf

Додати наступний параметр до http(..) секції

Http (#... fastcgi_read_timeout 300; #... }

Чи отримували ви коли-небудь помилку Fatal Error: Maximum execution time of 30 seconds exceededу WordPress? Ця помилка означає, що запущеному PHP-скрипту потрібно більше часу для виконання, ніж встановлено в обмеженні, і тому скрипт був зупинений. Цей посібник допоможе вам розібратися в питанні, як збільшити в PHP час виконання скрипту і тим самим вирішити помилку.

Перед початком посібника перевірте наявність:

  • Доступ до Адміністративної консолі вашого WordPress сайту (англ.)

Крок 1 – Встановлення плагіна WP Maximum Execution Time Exceeded

WordPress має величезну спільноту, тому для будь-якої функціональності, яка вам знадобиться, є зручний плагін або навіть кілька. Не виняток і наша ситуація, щоб збільшити в PHP час виконання скрипту, можна скористатися плагіном WP Maximum Execution Time Exceeded і усунути помилку. Детальну інструкцію про те, як встановити плагін WordPress можна знайти.

Цей плагін вносить зміни у файл.htaccess і збільшує обмеження часу виконання скрипту. Після встановлення плагіна вам нічого не потрібно робити, все вже зроблено плагіном. Сторінки налаштування у плагіна немає, тому якщо ви захочете повернути назад колишні налаштування, просто видаліть плагін і.htaccess буде повернений до початкового вигляду.

Крок 2 – Редагування файлу.htaccess вручну

Якщо у вас вже і так багато встановлених плагінів і ви не хочете використовувати додатковий або це просто не допомогло вам позбутися помилки, тоді ви можете внести зміни до файлу.htaccess руками для збільшення обмеження максимального часу виконання. Найпростіший спосіб скористатися Файловим менеджером, розташований у вашій панелі управління. Якщо ви не знаєте, як знайти файл.htaccess, зверніться до докладної інструкції. Вам потрібно буде ввести наступний код у файл.htaccess внизу та зберегти його, натиснувши Save:

Php_value max_execution_time 60

Це збільшить значення параметра max_execution_time та для PHP час виконання скрипту до 60 секунд (1 хвилина). Якщо ви досі отримуєте цю помилку, спробуйте збільшити його ще більше - до 120/180 секунд і так далі.

Крок 3 – Зміна значення max_execution_time у cPanel

Якщо ви використовуєте cPanel, ви можете підвищити значення параметра max_execution_time безпосередньо через cPanel. Перейдіть до розділу Select PHP Version (Виберіть версію PHP).

Збільште значення, яке ви бачите у рядку max_execution_time. Зазвичай воно встановлено в 30 секунд за замовчуванням, у нашому прикладі ми його збільшили до 60 секунд. Натисніть Apply(Застосувати), щоб зберегти зміни.

Ось і все, ви успішно збільшили обмеження значення параметра max_execution_timeдля вашого сайту

Висновок

Дотримуючись цього посібника, ви вивчили 3 шляхи збільшення max_execution_timeдля WordPress, щоб змінити в PHP час виконання скрипту і позбудеться помилки Fatal Error: Maximum execution time exceeded. Якщо ви користуєтеся загальним хостингом і не одне з рішень вам не підійшло, тоді зверніться до свого провайдера хостингу, щоб перевірити які насправді у вас обмеження і чи можлива їх зміна взагалі.

Якщо ви розробляєте великий проект, то на обробку деяких даних може знадобитися багато часу. На різних хостингах стоять свої ліміти на такі дії, і якщо вас привела необхідність збільшити цей час – то я докладно розповім, як це можна зробити.

Щоб ви розуміли, про що йдеться, наведу невеликий приклад. При виході за виставлені рамки часу ви можете отримати таку помилку:

Повна вага: Maximum execution time of 30 seconds exceeded in сайт.php on line 19

Я розповім про 4 способи, як позбутися її.

Але варто почати з того, що в кожному окремому випадку всі перераховані способи можуть не працювати, оскільки деякі хостинг-провайдери забороняють самим змінювати цей параметр.

Збільшення часу виконання PHP-скрипту через файл конфігурації php.ini

Як перший спосіб для збільшення часу виконання скрипту ми будемо використовувати файл конфігурації php.ini.

Щоб точно дізнатися, де знаходиться цей файл, прочитайте .

Відкриваєте його зручним для вас способом і в самий низ вставляєте:

Max_execution_time = 300;

Де « 300 » означає 300 секунд (міняєте на своє). Цей файл, на жаль, не на всіх хостингах доступний користувачам для редагування.

Збільшення часу виконання PHP-скрипту через вбудовану функцію «ini_set»

Другий спосіб ґрунтується на використанні функції « ini_set». Її ви вставляєте безпосередньо в сам файл скрипта, бажано в самий верх. Приклад:

Тут значення « 300 » ви також змінюєте на потрібне вам у секундах. Зверніть увагу, що під час використання PHP у безпечному режимі ця функція буде недоступною.

Збільшення часу виконання PHP-скрипту через вбудовану функцію «set_time_limit»

Третій спосіб, напевно, один із найпопулярніших – використання функції « set_time_limit» для зміни часу виконання скрипту. Також використовується безпосередньо у самому файлі PHP. Приклад:

Тут « 300 Ви також змінюєте на потрібне вам значення. Вставляти код бажано у самому верху.

Збільшення часу виконання PHP-скрипту через файл.

Останній варіант полягає у редагуванні файлу .htaccess, який знаходиться в корені вашого сайту (якщо такого немає – створіть його).

Вгору цього файлу вставте:

Php_value max_execution_time 300

Значення « 300 » ви також змінюєте своє.

Зверніть увагу, що у всіх випадках час виконання скрипту вказується у секундах. Крім цього, значення параметра у всіх способах може приймати 0 », що означає необмежений час виконання.

Як дізнатися скільки часу відведено на виконання PHP-скрипту?

Після того, як одним із способів ви спробували змінити час виконання скрипта, потрібно дізнатися, чи справді у вас це вийшло.

Для цього створіть файл PHP в корені вашого сайту, де виведіть значення встановленого часу:

Якщо час дорівнює тому, що ви вказали – вітаємо вас, ви досягли бажаної мети. А якщо ні, то прочитайте статтю ще раз, напишіть у коментарях про вашу проблему або направте її вашому хостинг-провайдеру.

Якщо ви розробляєте великий проект, то на обробку деяких даних може знадобитися багато часу. На різних хостингах стоять свої ліміти на такі дії, і якщо вас привела необхідність збільшити цей час – то я докладно розповім, як це можна зробити.

Щоб ви розуміли, про що йдеться, наведу невеликий приклад. При виході за виставлені рамки часу ви можете отримати таку помилку:

Незначна помилка: Maximum execution time of 30 seconds exceeded in pandoge_com.php on line 19

Я розповім про 4 способи, як позбутися її.

Але варто почати з того, що в кожному окремому випадку всі перераховані способи можуть не працювати, оскільки деякі хостинг-провайдери забороняють самим змінювати цей параметр.

Збільшення часу виконання PHP-скрипту через файл конфігурації php.ini

Як перший спосіб для збільшення часу виконання скрипту ми будемо використовувати файл конфігурації php.ini.

Щоб точно дізнатися, де знаходиться цей файл, прочитайте .

Відкриваєте його зручним для вас способом і в самий низ вставляєте:

Max_execution_time = 300;

Де « 300 » означає 300 секунд (міняєте на своє). Цей файл, на жаль, не на всіх хостингах доступний користувачам для редагування.

Збільшення часу виконання PHP-скрипту через вбудовану функцію «ini_set»

Другий спосіб ґрунтується на використанні функції « ini_set». Її ви вставляєте безпосередньо в сам файл скрипта, бажано в самий верх. Приклад:

Тут значення « 300 » ви також змінюєте на потрібне вам у секундах. Зверніть увагу, що під час використання PHP у безпечному режимі ця функція буде недоступною.

Збільшення часу виконання PHP-скрипту через вбудовану функцію «set_time_limit»

Третій спосіб, напевно, один із найпопулярніших – використання функції « set_time_limit» для зміни часу виконання скрипту. Також використовується безпосередньо у самому файлі PHP. Приклад:

Тут « 300 Ви також змінюєте на потрібне вам значення. Вставляти код бажано у самому верху.

Збільшення часу виконання PHP-скрипту через файл.

Останній варіант полягає у редагуванні файлу .htaccess, який знаходиться в корені вашого сайту (якщо такого немає – створіть його).

Вгору цього файлу вставте:

Php_value max_execution_time 300

Значення « 300 » ви також змінюєте своє.

Зверніть увагу, що у всіх випадках час виконання скрипту вказується у секундах. Крім цього, значення параметра у всіх способах може приймати 0 », що означає необмежений час виконання.

Як дізнатися скільки часу відведено на виконання PHP-скрипту?

Після того, як одним із способів ви спробували змінити час виконання скрипта, потрібно дізнатися, чи справді у вас це вийшло.

Для цього створіть файл PHP в корені вашого сайту, де виведіть значення встановленого часу:

Якщо час дорівнює тому, що ви вказали – вітаємо вас, ви досягли бажаної мети. А якщо ні, то прочитайте статтю ще раз, напишіть у коментарях про вашу проблему або направте її вашому хостинг-провайдеру.

Від автора:син мого знайомого настільки захопився хімією, що почав удома проводити різні «випробування». Після того, як їхньою «жертвою» стала люстра на кухні, батько попросив його змінити свої пристрасті. В результаті дитина захопилася статистикою і вирішила обчислити середній час горіння одного сірника. Наслідком чого мало не стало займання всієї квартири. Я порадив "горе-науковцеві" зайнятися програмуванням, і встановити час виконання скрипта PHP.

Навіщо виміри у програмуванні

Насамперед, це безпечніше, ніж хімія та статистика. А насправді час виконання програмного коду є важливим параметром, який впливає на працездатність всього ресурсу та окремих його модулів. Цей параметр більше затребуваний при оптимізації та тестуванні.

Трохи пофантазуємо. Уявимо, що є якийсь «самописний» движок, який розробник «залив» на хороший хостинг і запустив свій сайт. Але чомусь завантаження ресурсу за користувача відбувається дуже повільно.

У такій ситуації спочатку всі шишки посиплються на хостера. Швидше за все, розгніваний програміст звернеться зі скаргою до служби підтримки хостингу. Мовляв, не виконуються умови договору, сайт ледь живий…

Але насправді проблема повільного завантаження сторінок динамічного ресурсу може ховатися в самому движку. І щоб не виглядати потім чайником, досвідчений розробник завжди перед здаванням проекту вимірює час виконання скрипта PHP.

Можливості PHP

Я завжди називав однією з найзручніших мов програмування. Щоб відстежити час роботи коду, розробнику не потрібно писати довгі талмуди для перехоплення кожного рядка скрипта. У цій технології реалізовано кілька спеціалізованих засобів. Головним є функція microtime(). Вона повертає час (у мілісекундах), що минув з початку 1970 р. Так зване «початок епохи Unix». Якщо передати функції параметр get_as_float зі значенням true, то вона повертатиме часовий проміжок у вигляді цілих секунд і дробових мілісекунд.

Принцип використання microtime() полягає в наступному: функцію викликають на початку скрипту та в його кінці. Потім із останнього значення віднімають початкове. Ось як порахувати час виконання скрипт:

$last=microtime(true); $value=$last-$first; echo "Скрипт виконується за: ".$value; ?>

Змінюємо час роботи коду

У PHP значення час роботи скрипта можна обмежувати програмним шляхом (зменшувати чи збільшувати). Для цього використовуються кілька функцій, кожна з яких переписує параметр, встановлений у конфігураційному файлі (php.ini).
Спочатку модифікуємо наш код і збільшимо кількість ітерацій циклу в 20 разів до 200 мільйонів. Якщо все нормально, то після запуску скрипта ви повинні отримати повідомлення про фатальну помилку.

Це означає, що в установках параметра max_execution_time встановлено значення за замовчуванням (30 секунд). Збільшимо максимальний час виконання скрипту на PHP у 3 рази.

set_time_limit (90);

Тепер ми не отримуємо повідомлення про помилку.