Что такое код set_time_limit


Содержание

FPublisher

Web-технологии: База знаний

Документация PHP

set_time_limit

set_time_limit — Limits the maximum execution time

Описание

void set_time_limit ( int $seconds )

Set the number of seconds a script is allowed to run. If this is reached, the script returns a fatal error. The default limit is 30 seconds or, if it exists, the max_execution_time value defined in the php.ini .

When called, set_time_limit() restarts the timeout counter from zero. In other words, if the timeout is the default 30 seconds, and 25 seconds into script execution a call such as set_time_limit(20) is made, the script will run for a total of 45 seconds before timing out.

Список параметров

The maximum execution time, in seconds. If set to zero, no time limit is imposed.

Возвращаемые значения

Эта функция не возвращает значения после выполнения.

Примечания

This function has no effect when PHP is running in безопасный режим. There is no workaround other than turning off safe mode or changing the time limit in the php.ini .

Замечание: The set_time_limit() function and the configuration directive max_execution_time only affect the execution time of the script itself. Any time spent on activity that happens outside the execution of the script such as system calls using system(), stream operations, database queries, etc. is not included when determining the maximum time that the script has been running.

Difference between set_time_limit() and ini_set(‘max_execution_time’, …)

Is there any actual difference between these two lines of code?

5 Answers 5

Looking at the current source:


set_time_limit() is indeed just a convenience wrapper around the according ini_set() call. It doesn’t even seem to perform the advertised timer reset. (But I would guess the «timer» actually isn’t a separate entity, but the ini value itself is used as such.)

A tiny difference to take into account is the way they behave on failure:

set_time_limit() does not return anything so you can’t use it to detect whether it succeeded. Additionally, it’ll throw a warning:

Warning: set_time_limit(): Cannot set time limit in safe mode

ini_set() returns FALSE on failure and does not trigger warnings.

In practice, it should not be a great deal since safe mode is allegedly the only situation that can cause a failure and the feature is already deprecated.

Other than that, the function is just a wrapper for the property change.

Regarding timer reset, it is reset in both cases:

According to the php manual, set_time_limit() will reset the execution timer when called. I don’t believe ini_set() has the same side-effect, which would be the difference between the two.

Update: since examining various portions of the php source code (including that referenced by mario’s answer), it is my conclusion that ini_set() and set_time_limit() are precisely equivalent.

ini_set() does indeed reset the timer (though I’m still at a loss as to how either function performs the reset, I would have to look up the function that kills the script when the timer ends to figure that one out).

Разница между set_time_limit () и ini_set (‘max_execution_time’, …)

Есть ли реальная разница между этими двумя строками кода?

Рассматривая текущий источник :

set_time_limit() действительно просто удобная обертка вокруг соответствующего вызова ini_set() . Кажется, что он не выполняет рекламируемый сброс таймера. (Но я бы предположил, что «таймер» фактически не является отдельной сущностью, но само значение ini используется как таковое).

Небольшое различие, которое следует учитывать, это то, как они ведут себя при неудаче:

set_time_limit() ничего не возвращает, поэтому вы не можете использовать его для определения того, удалось ли это выполнить. Кроме того, он выдает предупреждение:

Предупреждение: set_time_limit (): невозможно установить ограничение по времени в безопасном режиме

ini_set() возвращает FALSE при сбое и не вызывает предупреждений.

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


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

Что касается сброса таймера, он сбрасывается в обоих случаях:

Согласно руководству php, set_time_limit () сбрасывает таймер выполнения при вызове. Я не верю, что ini_set () имеет тот же побочный эффект, который был бы разницей между ними.

Обновление: после изучения различных частей исходного кода php (включая ссылки, на которые ссылается ответ Марио), мой вывод о том, что ini_set () и set_time_limit () в точности эквивалентны.

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

Оба режима: «set_time_limit (5)» и «ini_set (« max_execution_time »,« 5 »)« время сброса », практичный и понятный пример:

Все «для» успешно завершены, это означает, что время было сброшено во всех случаях, Приветствия

Этот код действителен только для окон. Время сна в php linux не требует времени выполнения, например, в linux:

1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

но тот же код в Windows с настройкой по умолчанию покажет

set time-limit

English-russian dctionary of contemporary Economics . 2014 .

Смотреть что такое «set time-limit» в других словарях:

time limit — UK US noun [C] ► a date or time by which something must be done or completed: within a time limit »If a deal is not reached within the time limit, the firms involved will set up an auction. a time limit for doing sth »You should pay close… … Financial and business terms

Илон Маск рекомендует:  Как сделать, чтобы фотография располагалась по правому краю окна браузера

time limit — noun a time period within which something must be done or completed • Hypernyms: ↑time period, ↑period of time, ↑period • Hyponyms: ↑limitation * * * noun, pl ⋯ its [count] : an amount of time in which something must be done or completed … Useful english dictionary

time limit — n. to set a time limit for * * * to set a time limit for … Combinatory dictionary

time limit — / taɪm ˌlɪmɪt/ noun the maximum time which can be taken to do something ● to set a time limit for acceptance of the offer ● The work was finished within the time limit allowed. ● The time limit on applications to the industrial tribunal is three… … Dictionary of banking and finance

time-limit — 1. noun A variant of time limit. 2. verb Set a time limit on … Wiktionary

time limit — / taɪm ˌlɪmɪt/ noun the maximum time which can be taken to do something ● to set a time limit for acceptance of the offer … Marketing dictionary in english

time limit — defining a set amount of time to do something … English contemporary dictionary


Over Time Limit — In car rallying, Over Time Limit (universally abbreviated as OTL) is a situation where a crew has fallen so far behind their scheduled time that, in most rallies, they are excluded from further competition. The purpose of OTL is to set a limit on … Wikipedia

set*/*/*/ — [set] (past tense and past participle set) verb I 1) [T] to put someone or something in a position, or to be in a particular place or position Tea s ready, he told them and set down the tray.[/ex] She set the baby on the floor to play.[/ex] 2)… … Dictionary for writing and speaking English

set — set1 [ set ] (past tense and past participle set) verb *** ▸ 1 put someone/something somewhere ▸ 2 make something happen ▸ 3 make equipment ready ▸ 4 dec >Usage of the words and phrases in modern English

set — I UK [set] / US verb Word forms set : present tense I/you/we/they set he/she/it sets present participle setting past tense set past participle set *** 1) [transitive] to put someone or something in a position set someone/something… … English dictionary

set_time_limit

set_time_limit — ограничивает время выполнения.

Описание

void set_time_limit (int seconds)

Устанавливает время в секундах, в течение которого скрипт может работать. Если это значение достигнуто, скрипт возвращает фатальную ошибку. По умолчанию лимит — 30 секунд или, если оно существует, значение max_execution_time, определённое в файле конфигурации. Если seconds имеет значение 0, лимита нет.

При вызове set_time_limit() рестартует счётчик таймаута с нуля. Иначе говоря, если таймаут по умолчанию 30 секунд, прошло 25 секунд выполнения скрипта и сделан такой вызов set_time_limit(20), скрипт будет работать 45 секунд перед таймаутом.

set_time_limit() не действует, если PHP запущен в режиме safe mode. Нет иного выхода, кроме отключения safe mode или изменения лимита времени в файле конфигурации.

Примечание: функция set_time_limit() и директива конфигурации max_execution_time влияют только на время выполнения самого скрипта. Любое время, затраченное на деятельность вне выполнения скрипта, такую как системные вызовы с помощью system(), функция sleep(), запросы к БД etc. не включается при подсчёте максимального времени работы скрипта.

Drupal Русскоязычное сообщество

Очень часто вылетает ошибка вида:
* warning: set_time_limit() has been disabled for security reasons in /var/www/login/example.site/includes/common.inc on line 1982.
* warning: set_time_limit() has been disabled for security reasons in /var/www/login/example.site/modules/gsitemap/gsitemap.module on line 640.
* warning: set_time_limit() has been disabled for security reasons in /var/www/login/example.site/modules/image/contrib/image_import/image_import.module on line 173.
Все в принципе работает и так нормально,
но меня эти warning`и просто бесят. Я абсолютно не силен в грамоте MySql и PHP, но судя по написанному выше у хостера отключена эта функция set_time_limit() вообще. Обратился с запросом в сапорт хостера на что мне ответили:

Зачем вам тайм-лимит больше 600 секунд?
Это очень большое время,
врядли правильно работающий сайт будет что-то делать более 10 минут.

Я полез в средину модулей, где обнаружил такой код (gsitemap.module):

и в common.inc:

Т.е., судя из ответа сапорта, set_time_limit() работает (но не факт), тогда какие 600? — у меня ведь только 240. И у меня вызрел зловещий план — просто-напросто закомментировать эту строку с set_time_limit(), если уж она ни на что не влияет, а только лишь светит мой логин разной контре.
Вопрос знатокам — мой план верен? Если да, то как правильно закомментировать и что именно (только строку или что-то еще)? Или у вас есть свой вариант решения этой проблемы?

  • Drupal 5 и более старые версии

  • Блог
  • Войдите или зарегистрируйтесь, чтобы отправлять комментарии

Комментарии

Функция set_time_limit устанавливает максимальное время выполнения скрипта. Нормальный скрипт, отдающий данные клиенту, выполняется не больше секунды, так что в саппорте тебе дали правильный ответ.

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

Функция drupal_cron_run() связана с запуском крона. У тебя, случайно, не включен модуль, который запускает скрипты для крона после захода пользователя на сайт?

Функция set_time_limit() в ваших примерах срабатывает при установленном режиме safe_mode. Что, у вашего хостера включен этот режим?

Если все работает, но только бесят предупреждения — поставьте «php_value error_reporting 7» в .htaccess. «Проверено Занусси. «

TO vadbars@drupal.org К сожалению Занусси на этот раз подвела. у меня эта строка была прописана и проблемы не решала. На счет safe_mode у хостера я не в курсе.
TO Ромка Видимо хостер действительно запретил использование и переопределение set_time_limit(), а ее вызов и приводил к ошибке. Я на свой страх и риск закомментировал строку с вызовом set_time_limit() во всех модулях и это проблему разрешило. Так что ошибки больше не появляются, даже при запуске cron.

Функция set_time_limit() в ваших примерах срабатывает при установленном режиме safe_mode.

наоборот, при выключеном, при включенном safe mode set_time_limit не работает вообще

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

Что такое код set_time_limit

Здравствуте. Пользуюсь хостингом timeweb. У меня есть php скрипт, который исполняется около 5 минут.
На второй минуте каждый раз 502 Bad Gateway.
Позвонил в тех. поддержку, сказали, что они выставляют ограничение в 60 секунд и снять его нельзя.
Естественно при этом:
set_time_limit(0);
а также
php_value max_execution_time 3600
php_value max_input_time 3600
не работают!

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

Как увеличить память и время для PHP скриптов


Настройки потребления ресурсов в PHP скриптах можно установить в главном конфигурационном файле php.ini, а также в самих скриптах.

В файле php.ini за это отвечают директивы из раздела Resource Limits (ограничение потребления ресурсов).

Как увеличить память для PHP скриптов

Для этого в файле php.ini найдите и отредактируйте директиву:

Эта директива задаёт максимальное время в секундах, в течение которого скрипт должен полностью загрузиться. Если этого не происходит, парсер завершает работу скрипта. Этот механизм помогает предотвратить зависание сервера из-за плохо написанного скрипта. По умолчанию на загрузку даётся 30 секунд. Если PHP запущен из командной строки, это значение по умолчанию равно 0.

На максимальное время выполнения не влияют системные вызовы, потоковые операции и т.п.

При работе в безопасном режиме эту настройку нельзя изменить функцией ini_set(). Если значение все же нужно изменить, надо либо выключить безопасный режим, либо изменить значение прямо в php.ini.

Веб-серверы обычно имеют свои настройки тайм-аута, по истечении которого сами завершают выполнение скрипта PHP. В Apache есть директива Timeout, в IIS есть функция CGI timeout. В обоих случаях по умолчанию установлено 300 секунд. Точные значения можно узнать из документации к веб-серверу.

Функция для увеличения и ограничения времени выполнения PHP

Функция set_time_limit ограничивает время выполнения скрипта.

Она задает время в секундах, в течение которого скрипт должен завершить работу. Если скрипт не успевает, вызывается фатальная ошибка. По умолчанию дается 30 секунд, либо время, записанное в настройке max_execution_time в php.ini (если такая настройка установлена).

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

  • СЕКУНДЫ (максимальное время выполнения в секундах. Если задан ноль, время выполнения неограничено)

Возвращаемые значения: возвращает TRUE в случае успеха, иначе FALSE.

Внимание: эта функция не работает, если PHP работает в безопасном режиме. Обойти это ограничение можно только выключив безопасный режим или изменив значение настройки в php.ini.

Замечание: функция set_time_limit() и директива max_execution_time влияют на время выполнения только самого скрипта. Время, затраченное на различные действия вне скрипта, такие как системные вызовы функции system(), потоковые операции, запросы к базам данных и т.п. не включаются в расчет времени выполнения скрипта. Это не относится к системам Windows, где расчитывается абсолютное время выполнения.

Обе set_time_limit(…) и ini_set(‘max_execution_time’,…); не учитывают время, потраченное функциями sleep, file_get_contents, shell_exec, mysql_query и некоторыми другими.

Увеличение выделенной памяти для PHP скриптов

Директива в файле php.ini


задаёт максимальный объем памяти в байтах, который разрешается использовать скрипту. Это помогает предотвратить ситуацию, при которой плохо написанный скрипт съедает всю доступную память сервера. Для того, чтобы убрать ограничения, установите значение этой директивы в -1.

В версиях до PHP 5.2.1 для использования этой директивы, она должна была быть указана на этапе компиляции. Так, ваша строка конфигурации должна была включать: —enable-memory-limit. Эта опция компиляции была также необходима для использования функций memory_get_usage() и memory_get_peak_usage() до версии 5.2.1.

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

Доступные опции: K (для килобайт), M (для мегабайт) и G (для гигабайт; доступна начиная с PHP 5.1.0); они регистронезависимы. Все остальное считается байтами. 1M равно одному мегабайту или 1048576 байтам. 1K равно одному килобайту или 1024 байтам. Эти сокращения вы можете использовать в php.ini и в функции ini_set(). Обратите внимание, что числовое значение приводится к типу integer; например, 0.5M интерпретируется как 0.

Увеличение времени парсинга данных из запроса.

Директива в файле php.ini

задаёт максимальное время в секундах, в течение которого скрипт должен разобрать все входные данные, переданные запросами вроде POST или GET. Это время измеряется от момента, когда PHP вызван на сервере до момента, когда скрипт начинает выполняться. Значение по умолчанию -1, что означает, что будет использоваться max_execution_time. Если установить равным , то ограничений по времени не будет.

При запуске в командной строке значение директивы установлено на -1 (неограниченно).

Увеличение глубины вложенности входных переменных

Директива в файле php.ini

задаёт максимальную глубину вложенности входных переменных (то есть $_GET, $_POST.). По умолчанию данная директива закомментирована.

Ограничение на количество входных переменных

Директива в файле php.ini

определяет, входных переменных может быть принято в одном запросе (ограничение накладывается на каждую из глобальных переменных $_GET, $_POST и $_COOKIE отдельно). Использование этой директивы снижает вероятность сбоев в случае атак с использованием хеш-коллизий. Если входных переменных больше, чем задано директивой, выбрасывается предупреждение E_WARNING, а все последующие переменные в запросе игнорируются. По умолчанию данная директива закомментирована.

Внимание: после внесения изменений в файл php.ini необходимо перезагрузить веб-сервер, чтобы изменения вступили в силу.

Проверка использование ресурсов

Функция getrusage получает информацию об использовании текущего ресурса.

  • who (если аргумент who равен 1, getrusage будет вызвана с RUSAGE_CHILDREN).

Возвращаемые значения: возвращает ассоциативный массив, содержащий данные возвращённые из системного вызова. Имена элементов соответствуют документированным именам полей.


Пример использования getrusage():

Увеличение разрешённого размера файлов для загрузки на сервер

Кроме описанных ограничений на потребление непосредственных ресурсов веб-сервера, также имеются ограничения, которые оказывают косвенное воздействие на ресурсы: например, загрузка слишком большого файла на сервер может потребовать большого количества ресурсов для его обработки, либо привести к переполнению дискового хранилища сервера. Поэтому существуют дополнительные лимиты, включённые в другие разделы конфигурационного файла помимо Resource Limits.

В частности, директива

устанавливает максимальный размер закачиваемого файла.

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

Максимально допустимый размер данных, отправляемых методом POST

Методом пост могут отправляться как текстовые данные (например, при отправке комментария на сайт), так и файлы. Если вы увеличили значение upload_max_filesize чтобы иметь возможность загружать файлы большего размера на сайт, то также нужно увеличить и значение директивы:

которая устанавливает максимально допустимый размер данных, отправляемых методом POST. Это значение также влияет на загрузку файлов. Для загрузки больших файлов это значение должно быть больше значения директивы upload_max_filesize. В сущности, memory_limit должна быть больше чем post_max_size. Если используется integer, значение измеряется байтами. Вы также можете использовать сокращённую запись, которая описана выше. Если размер POST-данных больше чем post_max_size, суперглобальные переменные $_POST и $_FILES будут пустыми. Это можно отследить различными способами, например передав $_GET переменную в скрипт, обрабатывающий данные, т.е.

Как исправить ошибку Maximum Execution Time Exceeded в WordPress

Вы столкнулись с фатальной ошибкой Fatal Error: Maximum Execution Time Exceeded (Превышено максимальное время выполнения) при использовании сайта на WordPress? Эта ошибка означает, что скрипт PHP, который вы запустили, затратил на свое выполнение больше времени, чем позволяет лимит и из-за этого он был остановлен.

Исправление этой ошибки относительно простое, но для новичков знакомство с этой ошибкой может быть довольно неприятным моментом. В сегодняшней статье мы покажем вам, как решить проблему Maximum Execution Time Exceeded на своем сайте с помощью нескольких методов.

Почему возникает превышение максимального времени выполнения?

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

Способы исправления ошибки Fatal Error: Maximum Execution Time Exceeded

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

ВАЖНО! Перед редактированием файлов на сервере, убедитесь, что вы создали резервную копию этих файлов.

Способ №1. Редактирование файла .htaccess

Подключитесь к своему сайту с помощью любого FTP-клиента (например, FileZilla, TotalCommander и др.).

Файл .htaccess находится в корне сайта, т.е., в той же папке, что и папки /wp-content/ и /wp-admin/ .


Откройте этот файл и добавьте в него небольшую строку:

Этот код устанавливает для максимального времени выполнения значение в 300 секунд (5 минут). Если после этого вы все еще получаете ошибку, попробуйте увеличить значение до 600.

Способ №2. Редактирование файла wp-config.php

Добавьте в файл wp-config.php в корне сайта следующую строку (если в файле уже есть такая строка – просто измените старое значение):

Этот код также повышает значение для максимального времени выполнения скрипта до 300 секунд (5 минут).

Способ №3. Редактирование файла php.ini

Добавьте в файл php.ini , который находится в корне сайта, следующий код:

Данная настройка также влияет на максимальное время выполнения скрипта.

Способ №4. Изменение настроек через Панель администрирования сервера

Данный способ подойдет не всем, поскольку не на всех серверах есть возможность изменять настройки сервера с помощью Панели администрирования сервера.

Если вы используете cPanel, например, вы можете увеличить max_execution_time непосредственно через Панель управления сервером, не подключаясь к сайту по FTP.

  • Для этого перейдите в раздел «Выбор PHP-версии» (Select PHP Version).
  • Потом нажмите ссылку «Переключиться на опции PHP» (Switch To PHP Options).
  • Увеличьте значение по умолчанию, которое вы видите в строке max_execution_time . Обычно по умолчанию установлено 30 секунд, поэтому увеличьте значение минимум до 300 секунд. После этого нажмите кнопку «Применить» (Apply), чтобы сохранить изменения.

Вот и все, вы успешно увеличили лимит max_execution_time для своего сайта на WordPress.

Краткий вывод

Из сегодняшней статьи вы узнали 4 способа увеличить max_execution_time для WordPress и исправить фатальную ошибку: Превышено максимальное время выполнения (Fatal Error: Maximum Execution Time Exceeded).

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

Что такое код set_time_limit

set_time_limit — ограничивает время выполнения.

Описание

void set_time_limit (int seconds)

Устанавливает время в секундах, в течение которого скрипт может работать. Если это значение достигнуто, скрипт возвращает фатальную ошибку. По умолчанию лимит — 30 секунд или, если оно существует, значение max_execution_time , определённое в файле конфигурации. Если seconds имеет значение 0, лимита нет.

При вызове set_time_limit() рестартует счётчик таймаута с нуля. Иначе говоря, если таймаут по умолчанию 30 секунд, прошло 25 секунд выполнения скрипта и сделан такой вызов set_time_limit(20), скрипт будет работать 45 секунд перед таймаутом.

set_time_limit() не действует, если PHP запущен в режиме safe mode. Нет иного выхода, кроме отключения safe mode или изменения лимита времени в файле конфигурации.

Примечание: функция set_time_limit() и директива конфигурации max_execution_time влияют только на время выполнения самого скрипта. Любое время, затраченное на деятельность вне выполнения скрипта, такую как системные вызовы с помощью system() , функция sleep() , запросы к БД etc. не включается при подсчёте максимального времени работы скрипта.

Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL