время выполнения — php set_time_limit, каково точное поведение?

Я пишу кусок кода PHP, который в определенный момент запускает foreach цикл, и потому что я боюсь, что это займет слишком много времени, я добавил заявление set_time_limit(20); как первая строка цикла. (Я предполагаю, что safe_mode и патч Suhosin не включены.)

Теперь я читал в http://php.net/manual/en/function.set-time-limit.php тот

Когда звонили, set_time_limit () перезапускает счетчик тайм-аута с нуля. Другими словами, если время ожидания по умолчанию составляет 30 секунд и 25 секунд для выполнения сценария выполняется вызов, такой как set_time_limit (20), сценарий будет работать в общей сложности 45 секунд до истечения времени ожидания.

но я немного растерялся. Другими словами, если цикл выполняется, скажем, 10 раз, и для запуска каждого цикла потребуется 1 секунда, в конце 10-го цикла будет значение max_execution_time увеличивается до 20 * (10 — 1) = 180 секунд плюс начальная max_execution_time значение?

0

Решение

Цитирую из этого источник:

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

Функция set_time_limit, когда бы она ни вызывалась, эффективно увеличивает время выполнения скрипта на столько секунд. Таким образом, если сценарий уже работает в течение 15 секунд и вызывается set_time_limit (30), то он будет работать в общей сложности 30 + 15 = 45 секунд. Вот как это предназначено для работы.

1

Другие решения

Каждый раз, когда вы используете set_time_limit (), отсчет времени до тех пор, пока скрипт не будет убит / запускает ошибку max_execution_time, сбрасывается.

В вашем примере скрипт может работать в течение 20 секунд после последнего цикла.

1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector