Php узнать время выполнения скрипта. PHP: время выполнения скрипта на практике

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

В основе лежат функции для работы с датой и временем. Предлагаю рассмотреть пример, чтобы Вы поняли, как происходит подсчёт времени выполнения скрипта :

$start = microtime(true);
$sum = 0;
for ($i = 0; $i < 100000; $i++) $sum += $i;
echo "Время выполнения скрипта: ".(microtime(true) - $start);
?>

В результате мы увидим, что время выполнения скрипта будет, например, таким: "0.014652967453 ". Если округлить, то это 0.015 секунды. Это и есть время выполнения скрипта.

Теперь о том, как это работает. Функция microtime() с переданным значением true возвращает число секунд, прошедших с полуночи 01.01.1970 , причём это значение подсчитано до сотых долей секунды.

Далее идёт обычный скрипт, который мы и проверяем. Вместо него, безусловно, будет Ваш скрипт. И, наконец, последней строкой идёт разница между текущим временем (после выполнения скрипта) и тем, что мы зафиксировали при старте скрипта. Разница времени после выполнения скрипта и времени до начала его работы, и есть время выполнения скрипта .

Думаю, здесь всё просто. А вот применять этот способ подсчёта времени я Вам настоятельно рекомендую. Например, когда я отлаживал работу своего движка, на котором и стоит данный сайт, я ускорил его работу почти в 2 раза.

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

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

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-файл в корне вашего сайта, где выведите значение установленного времени:

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

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

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

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-файл в корне вашего сайта, где выведите значение установленного времени:

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

Выполнения скрипта имеет значение для целей определения времени формирования страницы или её элемента, для построения безопасного и надежного кода сайта в целом.

Существует три кардинально различных варианта этой цели: время формирования страницы целиком, время обновления элемента страницы и время исполнения ничем не ограничено, включая факт прекращения сессии посетителем.

Время исполнения скрипта

На PHP время выполнения скрипта определить так же просто, как это делалось на первых языках программирования. Определив временные метки в начале и в конце исследуемого кода, вычислив разницу этих значений, можно точно определить, сколько времени заняло исполнение всех синтаксических конструкций, которые находятся между конечной и начальной метками.

Простой скрипт: пример определения времени исполнения цикла.

PHP предоставляет разработчику две функции: microtime() и time(), которые можно использовать для формирования временных меток. Определяя эти метки перед началом исследуемого кода и по его завершении, можно вычислить разницу, то есть получить реальное время, которое было затрачено на исполнение кода.

Функции microtime() и time()

В данном примере в цикле используется разное количество итераций: 567 или 56789. В первом случае цикл работает быстрее, во втором - в десять раз медленнее.

Функция microtime() может использоваться без параметров, и тогда её результатом будет строка символов из двух чисел, разделенных пробелом. Первое число - количество микросекунд, второе число - количество секунд, прошедших с даты, признаваемой началом эпохи "Юникс".

Если функция microtime(true) вызывается с параметром, и его значение true, то результатом будет число - как сумма количества секунд и микросекунд. Использование функции без параметров эквивалентно вызову: microtime(false).

Функция time() не работает с микросекундами, потому на меньшем количестве итераций дает нулевое время исполнения.

Практическое значение времени исполнения

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

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

В частности, при разработке поисковой системы может потребоваться просматривать систематически спектр конкретных ресурсов сети на предмет выполненных на них изменений за определенный промежуток времени. Но какой-то ресурс может быть:

  • недоступен;
  • заблокирован;
  • находиться на техническом обслуживании.

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

Установив точное время для исполнения скрипта, например, 10 сек., 1 мин. или 5 мин., можно обеспечить собственному ресурсу строгое соблюдение регламента по обработке всех удаленных ресурсов, которые ему необходимы для решения своих задач.

Время и место исполнения скрипта

PHP - серверный язык, но это не во всех случаях означает, что на PHP время выполнения скрипта определяется исключительно скоростью работы сервера. Только ограниченный круг задач требует серверной обработки. Обращение к базе данных или к ресурсу в Сети из скрипта - это выход за пределы компетенции сервера и дополнительное время, которое будет затрачено на ожидание установления нужного соединения и получение необходимых данных.

Запуск PHP-скрипта может производиться по технологии AJAX, то есть после клика посетителя сайта на элементе страницы. Это обычная практика, когда страница не обновляется целиком, а только её отдельный элемент. Как правило, такое решение может быть связано с выборкой нужных данных. Любая задержка исполнения здесь критична для посетителя. Если время превышает его ожидания, он просто уйдет на более быстрый и комфортный ресурс.

Разработчик может оценить, сколько времени занимает требуемый процесс, и в случае если на 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 ) ;

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