увеличить время выполнения скрипта php htaccess
Как настроить в 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 можно найти здесь.
Это увеличит значение параметра 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. Если вы пользуетесь общим хостингом и не одно из решений вам не подошло, тогда обратитесь к своему провайдеру хостинга, чтобы проверить какие на самом деле у вас ограничения и возможно ли их изменение вообще.
Елена имеет профессиональное техническое образование в области информационных технологий и опыт программирования на разных языках под разные платформы и системы. Более 10 лет посвятила сфере веб, работая с разными CMS, такими как: Drupal, Joomla, Magento и конечно же наиболее популярной в наши дни системой управления контентом – WordPress. Её статьи всегда технически выверены и точны, будь то обзор для WordPress или инструкции по настройке вашего VPS сервера.
Как увеличить время выполнения PHP-скрипта?
Если вы разрабатываете крупный проект, то на обработку некоторых данных ему может потребоваться большое количество времени. На разных хостингах стоят свои лимиты на такие действия, и если сюда вас привела необходимость увеличить это время – то я подробно расскажу, как это можно сделать.
Чтобы вы понимали, о чем идет речь, приведу небольшой пример. При выходе за выставленные рамки времени вы можете получить следующего рода ошибку:
Я расскажу о 4-х способах, как избавиться от нее.
Но стоить начать с того, что в каждом отдельном случае все перечисленные способы могут не работать, так как некоторые хостинг-провайдеры запрещают самим изменять этот параметр.
Увеличение времени выполнения PHP-скрипта через конфигурационный файл php.ini
В качестве первого способа для увеличения времени выполнения скрипта мы будем использовать файл конфигурации php.ini.
Для того чтобы точно узнать, где находится этот файл, прочитайте эту статью.
Открываете его удобным для вас способом и в самый низ вставляете:
Где «300» означает 300 секунд (меняете на свое). Этот файл, к сожалению, не на всех хостингах доступен пользователям для редактирования.
Увеличение времени выполнения PHP-скрипта через встроенную функцию «ini_set»
Второй способ основывается на использовании функции «ini_set». Ее вы вставляете непосредственно в сам файл скрипта, желательно в самый верх. Пример:
Здесь значение «300» вы также сменяете на нужное вам в секундах. Обратите внимание, что при использовании PHP в безопасном режиме эта функция будет недоступна.
Увеличение времени выполнения PHP-скрипта через встроенную функцию «set_time_limit»
Третий способ, наверное, один из самых популярных – использование функции «set_time_limit» для изменения времени выполнения скрипта. Также используется непосредственно в самом файле PHP. Пример:
Здесь «300» вы также изменяете на нужное вам значение. Вставлять код желательно в самом верху.
Последний вариант заключается в редактировании файла .htaccess, который находится в корне вашего сайта (если таковой отсутствует – создайте его).
В самый верх этого файла вставьте:
Значение «300» вы также меняете на свое.
Обратите внимание, что во всех случаях время выполнения скрипта указывается в секундах. Помимо этого, значение параметра во всех способах может принимать «0», что означает неограниченное время выполнения.
Как узнать, сколько времени отведено на выполнение PHP-скрипта?
После того, как одним из способов вы попытались изменить время выполнения скрипта, нужно узнать, действительно ли у вас это получилось.
Для этого создайте PHP-файл в корне вашего сайта, где выведите значение установленного времени:
Если время равняется тому, что вы указали – поздравляем вас, вы достигли желаемой цели. В противном же случае прочитайте статью еще раз, напишите в комментариях о вашей проблеме или направьте ее вашему хостинг-провайдеру.
Использование директивы MAX_EXECUTION_TIME
По умолчанию максимальное время выполнения PHP-скрипта установлено на 30 секунд. Если скрипт выполняется дольше 30 секунд, PHP останавливает скрипт и сообщает об ошибке.
Fatal error: Maximum execution time of 30 seconds exceeded in pandoge_com.php on line 19
Чтобы изменить максимальное время выполнения ваших PHP-скриптов, выполните следующие действия:
1. Войдите в свою учетную запись, используя SSH.
Дешевый Vps в Европе
Vps в Европе
Наш Vps в Европе будет для вас отличным решением, если вы переросли среду общего хостинга и задаетесь вопросом, что делать дальше. Наши специалисты по..
Недорогой выделенный сервер
Недорогой выделенный сервер – это выделенный виртуальный сервер, услуга хостинга, при которой клиент полностью получает в личное пользование виртуальн..
Хостинг с большим дисковым пространством ✅
Быстрый виртуальный хостинг✅
Выделенный Сервер в Европе ✔️
Купить Хостинг Дешево
Облачный хостинг
Решение выбрать облачный хостинг может быть продиктовано желанием иметь собственный сервер, и не платить за избыточную емкость жесткого диска, которой..
Хостинг недорогой
Сервер для сайта
Надежный сервер для сайта необходим каждому, кто желает безопасный “ Дом ” для своего проекта-сайта. Крупному сайту, который интенсивно наполняется но..
Сервер Аренда
Виртуальный хостинг сайтов ✔️
Хостинг для wordpress Украина✔️
Услуга » Хостинг для wordpress Украина » в Hostimul является наиболее востребованной в силу своей надежности и качества обслуживания. Управляемые сайт..
Надежный Хостинг ✔️
Хостинг выделенный сервер
Хостинг пробный период✅
Хостинг пробный период доступен в Hostimul.com на целый месяц с бесплатным доменом. Получите удобные услуги управления доменом вместе с учетной запись..
Купить Хостинг Для Сайта ✅
Хостинг для интернет магазина
Хостинг бесплатный ✔️
Выберите хостинг бесплатный для оптимизации вашего бизнеса. Наши хостинговые услуги также распространяют свои услуги на таких администраторов веб-сайт..
Vps в Сша ☑️
Vps в Украине ☑️
Vps в Украине стал самым популярным среди всех. Технология виртуализации используется службой хостинга, которая предоставляет частные выдел..
Vps в Германи ✅
Vps Германи с использованием Hostimul.com означает, что вы можете быть уверены, что сможете использовать дополнительные ресурсы хостинга ил..
Лучший хостинг ☑️
Аренда виртуального сервера ☑️
Выделенный сервер ☑️
Выделенный сервер идеально подходит для высоконагруженных сайтов, в особенности для игровых порталов, для больших интернет магазинов с высокой посещае..
Купить хостинг ☑️
Виртуальный Сервер ☑️
Vps в Москве ✅
Заказать Vps в Москве через hostimul.com будет для вас очень выгодно и доступно. Независимо от того, устанавливается ли пользовательское приложение и..
Vps в России ✅
В первую очередь VPS обозначает виртуальный частный сервер. Это имитируемая машина, размещенная в облаке, которая позволяет владельцам настраивать соб..
Vps в Нидерландах ✅
Baranova 2869/35, Žižkov,
130 00 Prague 3, Czechia
Как увеличить память и время для 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. Если установить равным 0, то ограничений по времени не будет.
При запуске в командной строке значение директивы установлено на -1 (неограниченно).
Увеличение глубины вложенности входных переменных
Директива в файле php.ini
Ограничение на количество входных переменных
Директива в файле php.ini
Внимание: после внесения изменений в файл php.ini необходимо перезагрузить веб-сервер, чтобы изменения вступили в силу.
Проверка использование ресурсов
Функция getrusage получает информацию об использовании текущего ресурса.
Возвращаемые значения: возвращает ассоциативный массив, содержащий данные возвращённые из системного вызова. Имена элементов соответствуют документированным именам полей.
Пример использования getrusage():
Увеличение разрешённого размера файлов для загрузки на сервер
Кроме описанных ограничений на потребление непосредственных ресурсов веб-сервера, также имеются ограничения, которые оказывают косвенное воздействие на ресурсы: например, загрузка слишком большого файла на сервер может потребовать большого количества ресурсов для его обработки, либо привести к переполнению дискового хранилища сервера. Поэтому существуют дополнительные лимиты, включённые в другие разделы конфигурационного файла помимо Resource Limits.
В частности, директива
устанавливает максимальный размер закачиваемого файла.
Если используется целое число, значение измеряется байтами. Вы также можете использовать сокращённую запись, которая описана чуть выше.
Максимально допустимый размер данных, отправляемых методом POST
Методом пост могут отправляться как текстовые данные (например, при отправке комментария на сайт), так и файлы. Если вы увеличили значение upload_max_filesize чтобы иметь возможность загружать файлы большего размера на сайт, то также нужно увеличить и значение директивы:
которая устанавливает максимально допустимый размер данных, отправляемых методом POST. Это значение также влияет на загрузку файлов. Для загрузки больших файлов это значение должно быть больше значения директивы upload_max_filesize. В сущности, memory_limit должна быть больше чем post_max_size. Если используется integer, значение измеряется байтами. Вы также можете использовать сокращённую запись, которая описана выше. Если размер POST-данных больше чем post_max_size, суперглобальные переменные $_POST и $_FILES будут пустыми. Это можно отследить различными способами, например передав $_GET переменную в скрипт, обрабатывающий данные, т.е.
Настройки веб-сервера Apache
Перенаправление
Redirect 301 / http://example.com/
В случае, если перенаправление носит временный характер, перенаправить запрос со страницы blog на другую страницу того же сайта new-blog можно вот так:
Redirect 302 /blog /new-blog/index.php
Простые правила перенаправления вы можете создавать автоматически при помощи раздела «Перенаправления» в Панели управления хостингом при переходе к управлению сайтом. Более сложные правила (с условиями и дополнительными параметрами) составляются при помощи модуля Apache mod_rewrite. Использование этого модуля позволяет решить широкий спектр задач, примеры некоторых мы рассмотрим ниже.
Перенаправление на HTTPS
Защита SSL-сертификатом обязывает сайт всегда работать только по протоколу HTTPS. Данное правило перенаправляет запросы, поступившие от посетителей сайта, с HTTP на HTTPS:
Перенаправление на определенное имя сайта (с или без www)
RewriteEngine on
RewriteCond %
RewriteRule ^(.*) http://www.example.com/$1 [R=301,L]
Во второй строке правила содержится условие: все запросы, которые поступили не на имя www.example.com, перенаправлять на www.example.com. Чтобы конкретизировать правило (например, задать определенный домен, а не все, что подходят под условие), достаточно убрать восклицательный знак — он означает отрицание. Например, данное правило перенаправляет запросы с дополнительного домена alias.com на основной сайт site.ru:
RewriteEngine on
RewriteCond %
RewriteRule ^(.*) http://site.ru/$1 [R=301,L]
Избавиться от дублей страниц
Поисковые системы при индексации сайта могут воспринимать ссылки со слешем (косая черта — /) и без него как разные страницы. А еще бывает, что при обращении к таким ссылкам открывается разное содержимое (например, example.com/shop/ — работает, а example.com/shop — отдает код 404). Чтобы устранить эти дубли страниц, примените к сайту эти правила перенаправления 301.
Добавить слеш ко всем страницам сайта можно при помощи правила:
Это правило автоматически перенаправит поискового робота и посетителя, например, со страницы example.com/shop на example.com/shop/.
В эти правила можно добавить исключение для конкретной директории, чтобы на нее правило перенаправления не действовало — например, если это обусловлено особенностями CMS сайта:
Добавьте эту строку в середину правила (под остальными RewriteCond) и измените имя директории из примера.
Сделать собственную страницу с ошибкой (ErrorDocument)
ErrorDocument 404 /error404.html
Закрыть сайт от посетителей
Запретить доступ по IP-адресу
Простая директива, в которой указываются списки IP-адресов доступа и запрет для остальных, выглядит так:
order deny,allow
deny from all
allow from X.X.X.X
Вместо X.X.X.X укажите ваш IP-адрес (проверить его можно, например, здесь). Обращения с других IP-адресов завершатся ошибкой 403 Forbidden.
Запретить доступ по User-Agent
Вместо example1 и example2 укажите User-agent роботов или программ, доступ для которых требуется запретить.
Направить на страницу о технических работах
Также можно перенаправлять посетителей на собственноручно созданную страницу с сообщением о проводимых технических работах. С указанного в условии (RewriteCond) IP-адреса сайт будет отображаться по-прежнему:
RewriteEngine on
RewriteCond %
RewriteCond %
RewriteRule ^.*$ site-closed.html
Страницу ошибки site-closed.html необходимо поместить в корневом каталоге сайта или указать в директиве путь к ней.
Поддомен открывается с ошибкой Internal Server Error (частный случай)
Это правило отключит mod_rewrite для вложенной директории поддомена.
Установка индексного файла (DirectoryIndex)
При открытии директории без указания конкретного файла веб-сервер ищет индексные файлы index.html, index.php в порядке приоритета для отображения. Если индексные файлы отсутствуют, сервер возвращает ошибку 403 Forbidden, так как отображение списка файлов (листинг директорий) по умолчанию запрещено.
Чтобы установить в качестве индексного файла произвольный файл, следует добавить инструкцию:
Например, следующая инструкция предписывает веб-серверу при обращении к сайту открывать не страницу, а изображение example.jpg в папке pics сайта:
Настройки веб-серверов в Панели управления
В настройках базового веб-сервера вы можете изменять все директивы PHP, значение графы Changeable для которых соответствует PHP_INI_PERDIR или PHP_INI_ALL. Эти настройки будут иметь силу на всех сайтах, которые работают на этом веб-сервере.
Управлять абсолютно всеми параметрами PHP вы можете на расширенном веб-сервере, редактируя php.ini через его настройки.
Отображать ошибки PHP (display_errors)
php_value display_errors 1
Включить журнал ошибок PHP (error_log)
Для того чтобы сохранять, изучать и исправлять ошибки включите их сбор и хранение с помощью следующих строк:
php_value error_log /home/login/domains/example.com/php_errors.log
Директория в пути расположения файла должна существовать, а если ее нет — обязательно создайте папку вручную. Файл журнала будет создан при появлении первой ошибки.
Увеличить оперативную память для скриптов (memory_limit)
php_value memory_limit 512M
Вместо 512M укажите желаемый размер ограничения. Обратите внимание, что символ «M» (латинская M) указывается слитно со значением. Уточнить максимальное значение оперативной памяти, доступное по тарифу, можно в документе.
Увеличить время выполнения скриптов (max_execution_time)
php_value max_execution_time 300
Вместо 300 укажите желаемый размер ограничения. Обратите внимание, что выполнение скрипта более чем в 10 минут (600 секунд) завершится ошибкой с кодом 504.
Изменить объем загружаемого файла (post_max_size и upload_max_filesize)
По умолчанию через сайт можно загрузить файл объемом не более 1Гб. Чаще этот размер даже меньше — 100Мб, из-за ограничения на объем запроса методом POST.
php_value post_max_size 200M
php_value upload_max_filesize 200M
Вместо 200M укажите желаемый размер ограничения. Обратите внимание, что символ «M» (заглавная латинская M) указывается слитно со значением.
Передавать максимум переменных в PHP (max_input_vars)
Максимальный размер передаваемых переменных определяется с помощью следующей директивы:
php_value max_input_vars 15000
Вместо 15000 укажите необходимый размер ограничения, который требует CMS сайта.
Исправить неверную кодировку (default_charset)
AddDefaultCharset «windows-1251»
php_value default_charset «windows-1251»
Вместо «windows-1251» подставьте подходящую кодировку, например, UTF-8. Проверить, в какой именно кодировке написан сайт, можно через инструменты используемого браузера. Если сайт не обрел корректный вид, обратитесь за помощью в службу технической поддержки.
Изменить время хранения сессий PHP
Изменение времени хранения сессий может потребоваться, если вы хотите, чтобы данные об авторизации пользователей на вашем сайте сохранялись дольше.
php_value session.save_path /home/login/domains/example.ru/tmp
php_value session.gc_maxlifetime 604800
php_value session.cookie_lifetime 604800
Обратите внимание: при большом количестве посетителей и длительном времени сохранения сессий в папке, указанной в session.save_path, образуется большое количество файлов. Это может вызывать замедление сайта в момент очистки старых сессий и увеличивать количество потребляемых ресурсов. Альтернативные механизмы хранения и очистки сессий:
Другие настройки (CGI, Python, Node.js)
Включить SSI
Выполнять скрипты CGI/Perl
Включить uWSGI (Python)
Вместо site.wsgi укажите входной файл вашего приложения.
Включить Node.js c помощью приложения Passenger
Замените example.com на основное имя вашего сайта, а login на логин вашего аккаунта.
У меня остались еще вопросы!
Если вы не нашли ответа на свой вопрос в этом разделе, то вы всегда можете обратиться к нам за помощью через форму обратной связи в разделе «Поддержка» Панели управления.