Я пишу кусок кода 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
значение?
Цитирую из этого источник:
Set_time_limit может использоваться для динамической настройки максимального времени выполнения, разрешенного для скрипта. Это позволяет указывать время в секундах и ограничивает время выполнения скрипта этим количеством секунд.
Функция set_time_limit, когда бы она ни вызывалась, эффективно увеличивает время выполнения скрипта на столько секунд. Таким образом, если сценарий уже работает в течение 15 секунд и вызывается set_time_limit (30), то он будет работать в общей сложности 30 + 15 = 45 секунд. Вот как это предназначено для работы.
Каждый раз, когда вы используете set_time_limit (), отсчет времени до тех пор, пока скрипт не будет убит / запускает ошибку max_execution_time, сбрасывается.
В вашем примере скрипт может работать в течение 20 секунд после последнего цикла.