Функция ограничения времени исполнения PHP: max_execution_time()
Любой алгоритм должен быть быстрым и точным. PHP - это язык сервера, работает быстро и эффективно. Один сервер может обслуживать тысячи процессов одновременно, но каждый из них может создать проблемы всем остальным. Управление временем исполнения имеет важное значение для веб-ресурса и тех, которые находятся рядом с ним.
Алгоритм и время
Условия и циклы - всего два варианта создать проблемы. Последовательный код не может создать реальной задержки времени исполнения. Даже на больших объемах данных PHP стремительно справляется с любой поставленной задачей.
Можно запутать процесс исполнения скрипта, создав стохастическую систему объектов. Однако современный программист придерживается классических традиций в программировании или использует громоздкие системы управления сайтами. Шансов на создание сложной системы реальных объектов практически нет. Нагрузки на сервер тоже.
Фатальная ошибка времени исполнения - результат неправильного алгоритма или банального зацикливания. С тем, чтобы избежать зависания сервера, нарушения функционирования всех «правильных» серверных процессов из-за одного «неправильного», файл php.ini содержит ограничение времени исполнения любого скрипта - директиву: max_execution_time = 30.
Обычно хостеры запрещают изменять время исполнения скрипта. Но если это возможно, то посредством функции PHP max_execuion time() можно выставить желаемое значение. Принципиально с хостером можно договориться и на бесконечное исполнение php-процессов. Используя функции ignore_user_abort() и set_time_limit(), можно дать скрипту шанс на вечное существование: он сможет работать даже если посетитель ушел с ресурса.
Вечные скрипты и ограничение исполнения
Не так мало задач, которые требует «постоянной заботы». Самый простой и доступный пример - биржа. Информация с биржи должна поступать постоянно. Не важно, сколько брокеров в данный момент подключены к бирже, кто из них ушел на обед или уснул, скрипт должен стабильно работать длительное время, как минимум полный операционный день.
Существуют и другие задачи, требующие работы скрипта в свободном режиме без ограничения времени исполнения. Использовать или нет функцию PHP max_execution_time() - воля программиста. PHP быстрый язык и в 30 секунд любой алгоритм укладывается без особых проблем.
Когда нужно действительно проявить терпение - поток данных действительно велик или задержка информации при передаче с сервера заметна, можно увеличить значение в php.ini с согласия хостера. Можно использовать функцию PHP max_execution_time().
Но в любом случае, если возникает потребность в увеличении времени исполнения и нет необходимости проектировать «вечный» алгоритм, следует пересмотреть алгоритм и условия задачи. Качество любого алгоритма - прозрачное и понятное исполнение. Минимум условий, минимум циклов, простая последовательность действий - хорошее решение задачи.
Условия и циклы
Как установить нужное значение времени исполнения скрипта PHP: max_execution_time() или ini_set() - вопрос творческий, но не существенный. Лучше обратиться к хостеру и изменить нужную директиву в файле php.ini, который именно для этого предназначен.
Изменять директиву средствами языка - не самая привлекательная идея. Гораздо более перспективно пересмотреть алгоритм, проверить все действующие условия и циклы. Алгоритм должен прозрачно и последовательно достигать нужного результата. Никаких лишний ветвлений, все циклы должны быть под контролем количества итераций.
Только когда цикл максимально отлажен, он не может дать сбой. Только когда количество условий сведено до минимума, можно не придавать никакого значения изменению значения директивы времени исполнения. Поставленная задача будет решена за установленное время.