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

Содержание

set_time_limit

(PHP 4, PHP 5, PHP 7)

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, где расчитывается абсолютное время выполнения.

Ошибка импортера WordPress: максимальное время выполнения 60 секунд

Я пытаюсь импортировать тестовый XML- объект WordPress test xml с плагином импортера wordpress по умолчанию. Я получаю следующую ошибку:

Неустранимая ошибка: максимальное время выполнения 60 секунд превышено в E: \ XAMPP \ htdocs \ wp \ wp-includes \ wp-db.php

Это базовая установка WordPress 4.5.1 без дополнительных плагинов или тем, кроме импортера WordPress v 0.6.1, на моем локальном сервере XAMPP, ограничение времени выполнения установлено в 6000 в php.ini, и я могу видеть этот пресет в php_info xampp , Я уже пытался добавить set_time_limit (6000) в wp-config.php и wp-db.php с той же уродливой ошибкой, что и результат.

Любые идеи, почему это происходит и как это можно помочь?

Я нашел точную причину возникновения этой ошибки, поэтому я постараюсь дать ответ на свой вопрос.

В wp-includes / deprecated.php есть функция wp_get_http, которая по-прежнему используется плагином импортера wordpress (внутри исходного файла wordpress-importer.php). Внутри этой функции вызывается set_time_limit (60), это один из двух вызовов этой функции с параметром 60 во всем исходном коде WordPress, поэтому это место ограничивает время выполнения импортера до 60 секунд.

wp_get_http вызывается плагином-импортером довольно поздно в потоке выполнения, поэтому он переопределяет любые другие возможные вызовы set_time_limit () в wp-config.php и не может быть исправлен с помощью модификаций в php.ini, которые сами по себе могут не быть разрешено хостинг-провайдером.

Быстрое решение этой проблемы, которая работала для меня, заключается в изменении вызова set_time_limit внутри wp_get_http () в wp-includes / deprecated.php, например:

Он дает импортеру wordpress 20 минут для получения всех удаленных файлов, которые могут потребоваться во время импорта. Может быть, это не самое безопасное решение, но это сработало для меня.

Вы можете добавить его в свой php.ini

Это, безусловно, решит проблему.

Это связано с тем, что время загрузки файла в php.ini установлено на 60 seconds то время как WordPress требует больше времени для правильной загрузки этих данных. Как и конец времени в php.ini он вызывает эту ошибку. Решение состоит в том, что вам нужно увеличить время загрузки, которое вам подходит.

замените эту строку кода своей собственной строкой кода php.ini, и ваша проблема будет решена. Если проблемы не исчезнут, вы можете увеличить это число 300 до тех пор, пока ваши файлы не будут загружены должным образом. Для дальнейшего чтения посетите http://php.net/manual/en/function.set-time-limit.php

Добавьте это в свой .htaccess файл

Это для вашего wp-config.php

просто зайдите в файл wp-config и вставьте этот set_time_limit (60); или просто измените фигуру в круглых скобках на нужный вам вариант.

Илон Маск рекомендует:  Что такое код swffont

Как ограничить максимальное время выполнения скрипта PHP

1 ipel [2014-04-04 19:08:00]

У меня есть php-скрипт (file.php), который используется для подсчета показов баннера и возврата изображения, он заканчивается следующим образом:

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

Поэтому, чтобы уменьшить использование моего хостинга, я думаю, чтобы добавить максимальное время выполнения только для этого скрипта, например: если прошло 5-10 секунд, скрипт закрывается

Я думаю, что это возможно, но как?

php time limit execution

3 ответа

2 Решение VolkerK [2014-04-04 19:15:00]

Я просто тестировал set_time_limit(), но, видимо, readfile («http. «); не соблюдает эту настройку. Сценарий выполнялся дольше, чем время, заданное с помощью set_time_limit, но затем прервалось до того, как был выполнен очередной экземпляр «in-script».
Но так как php 5.2.1 http url wrapper имеет timeout параметра контекста, который, похоже, делает трюк.

1 Stony [2014-04-04 19:10:00]

Вы можете установить время выполнения в верхней части вашего скрипта с помощью функции ограничения времени.

Не работает set_time_limit()

01.08.2013, 15:50

set_time_limit
скрипт выполняет долгую работу(парсинг нескольких сайтов в цикле). поставил в начале.

Set_time_limit — обработка ошибок
Друзья! Заинтересовал вот такой вопрос: Можно ли как-то вместо стандартной ошибки о превышении.

Как увеличить время выполнения скрипта, кроме set_time_limit?
стандартно 60 сек дается на выполнение скрипта и если нужно больше то прописываю set_time_limit ().

Запуск долгих скриптов на php

Хотя запуск долгих скриптов на php (от 5 мин и более) по разным причинам обычно считается нежелательным, в некоторых ситуациях это может выручить. Простой пример: при xml-импорте инфоблока в битриксе с 500 свойствами и 10000 элементами, стандартного максимального времени выполнения может быть недостаточно — хотя скрипт и выполняется по шагам, но может, например, зависнуть, на создании вспомогательных индексов.

В данной статье рассмотрим запуск долгих php скриптов на apache+nginx и рассмотрим также ограничения браузеров.

Самое первое, что необходимо проверить — это настройки php «max_execution_time» и «session.gc_maxlifetime» (максимальное время выполнения скрипта и время сессии соответственно). Ее можно установить из htaccess (параметры устанавливаются в секундах):

или, конечно же, из php.ini

Однако, даже если установить большое значение max_execution_time, при установленном nginx, если время еще не истекло, вы можете получить сообщение об ошибке подобное этому:

504 Gateway Timeout error using Nginx

Данную ситуацию можно исправить, отредактировав файл конфигурации nginx (на системах Debian находится здесь — /etc/nginx/nginx.conf):

Но и это еще не все. У браузеров также есть свои ограничения по времени на получение страниц и у разных браузеров они отличаются. Но это также поправимо, и проще всего эта настройка меняется в браузере Mozilla Firefox: нужно зайти в расширенные настройки введя в адресной строке «about:config», затем найти по поиску значение «network.http.connection-timeout», в котором, как и везде, можно установить значение максимального времени получения страницы в секундах.

Скрипты тестирования максимального времени выполнения скрипта

Для тестирования описанных мной настроек, я приведу здесь два скрипта — простой запуск страницы и получение с использованием ajax (это может быть важно, т.к. настройки браузера могут отличаться для получения простых страниц и средствами XHR).

Как продлить время выполнения php-скрипта?

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

[Thu Nov 10 00:07:48 2011] [error] [client 127.0.0.1] PHP Fatal error: Maximum execution time of 30 seconds exceeded in /var/www/xxx/SOM.inc on line 291

Где можно увеличить время выполнения?

4 ответа 4

Если поставить в 0, к тому же, ограничение на время выполнения скрипта вообще отсутствует.

В php.ini прописать:

Только это не панацея — через 60 сек некоторые броузеры разрывают соединение, и тогда apache прибивает процесс

Попробуй в php php ini_set(«max_execution_time», «60»); или файл .htaccess -> php_value max_execution_time 60 .

Для увеличения времени работы скрипта, в начале кода пропишите вот это (где цифры это время выполнения скрипта в секундах)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками apache php linux или задайте свой вопрос.

Похожие

Подписаться на ленту

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

дизайн сайта / логотип © 2020 Stack Exchange Inc; пользовательское содержимое попадает под действие лицензии cc by-sa 4.0 с указанием ссылки на источник. rev 2020.11.11.35402

Как настроить в PHP время выполнения скрипта – параметр max_execution_time

Вступление

Получали ли вы когда-либо ошибку Fatal Error: Maximum execution time of 30 seconds exceeded в WordPress? Эта ошибка означает, что запущенному PHP-скрипту требуется больше времени для выполнения, чем установлено в ограничении, и по причине этого скрипт был остановлен. Это руководство поможет вам разобраться в вопросе, как увеличить в PHP время выполнения скрипта и тем самым решить возникшую ошибку.

Илон Маск рекомендует:  Изменения в среде разработки

Что понадобится

Перед началом руководства проверьте наличие:

Шаг 1 – Установка плагина WP Maximum Execution Time Exceeded

У WordPress огромное сообщество, поэтому для любой функциональности, которая вам понадобится, есть удобный плагин или даже несколько. Не исключение и наша ситуация, чтобы увеличить в PHP время выполнения скрипта, можно воспользоваться плагином WP Maximum Execution Time Exceeded и устранить возникшую ошибку. Подробную инструкцию о том, как установить плагин WordPress можно найти здесь.

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

Шаг 2 – Редактирование файла .htaccess вручную

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

Это увеличит значение параметра max_execution_time и для PHP время выполнения скрипта до 60 секунд (1 минута). Если вы до сих пор получаете эту ошибку, то попробуйте увеличить его ещё больше – до 120/180 секунд и так далее.

Шаг 3 – Изменение значения max_execution_time в cPanel

Если вы используете cPanel, то вы можете повысить значение параметра max_execution_time напрямую через cPanel. Перейдите в раздел Select PHP Version (Выберите версию PHP).

Теперь нажмите на ссылку Switch To PHP Options (Настройки переключения версий PHP).

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

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

Заключение

Следуя этому руководству, вы изучили 3 пути увеличения max_execution_time для WordPress, чтобы изменить в PHP время выполнения скрипта и избавится от ошибки Fatal Error: Maximum execution time exceeded. Если вы пользуетесь общим хостингом и не одно из решений вам не подошло, тогда обратитесь к своему провайдеру хостинга, чтобы проверить какие на самом деле у вас ограничения и возможно ли их изменение вообще.

Как исправить ошибку 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.

Илон Маск рекомендует:  Что такое код imap_utf7_encode

Способ №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 (0) и «Максимальное время выполнения» PHP

У меня есть script, где я установил:

но все равно получите

Я также попробовал установку:

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

Скорее всего, ваш хост запускает копию PHP с установленным пакетом Suhoshin. Этот патч обеспечивает большое количество улучшений безопасности и операционной системы для PHP, в том числе позволяет хосту отключать функции, такие как set_time_limit() .

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

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

Что вы можете сделать с этим?

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

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

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

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

Когда звонили, 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 секунд после последнего цикла.

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