Яндекс Браузер

Как увеличить время выполнения скрипта php. Функции языка для измерения время выполнения скрипта PHP

Как увеличить время выполнения скрипта 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 ) ;

Теперь мы не получаем сообщения об ошибке.

Если у вас есть большой проэкт или сервер с ограниченными ресурсами, то Вы будете часто видеть «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 . Если вы пользуетесь общим хостингом и не одно из решений вам не подошло, тогда обратитесь к своему провайдеру хостинга, чтобы проверить какие на самом деле у вас ограничения и возможно ли их изменение вообще.

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

Чтобы вы понимали, о чем идет речь, приведу небольшой пример. При выходе за выставленные рамки времени вы можете получить следующего рода ошибку:

Fatal error: 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

Последний вариант заключается в редактировании файла .htaccess , который находится в корне вашего сайта (если таковой отсутствует – создайте его).

В самый верх этого файла вставьте:

Php_value max_execution_time 300

Значение «300 » вы также меняете на свое.

Обратите внимание , что во всех случаях время выполнения скрипта указывается в секундах. Помимо этого, значение параметра во всех способах может принимать «0 », что означает неограниченное время выполнения.

Как узнать, сколько времени отведено на выполнение PHP-скрипта?

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

Для этого создайте PHP-файл в корне вашего сайта, где выведите значение установленного времени:

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

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

Чтобы вы понимали, о чем идет речь, приведу небольшой пример. При выходе за выставленные рамки времени вы можете получить следующего рода ошибку:

Fatal error: 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

Последний вариант заключается в редактировании файла .htaccess , который находится в корне вашего сайта (если таковой отсутствует – создайте его).

В самый верх этого файла вставьте:

Php_value max_execution_time 300

Значение «300 » вы также меняете на свое.

Обратите внимание , что во всех случаях время выполнения скрипта указывается в секундах. Помимо этого, значение параметра во всех способах может принимать «0 », что означает неограниченное время выполнения.

Как узнать, сколько времени отведено на выполнение PHP-скрипта?

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

Для этого создайте PHP-файл в корне вашего сайта, где выведите значение установленного времени:

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