Увеличить время выполнения скрипта 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 сервера.

Источник

Настройки веб-сервера 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 % !^www.example.com$
RewriteRule ^(.*) http://www.example.com/$1 [R=301,L]

Во второй строке правила содержится условие: все запросы, которые поступили не на имя www.example.com, перенаправлять на www.example.com. Чтобы конкретизировать правило (например, задать определенный домен, а не все, что подходят под условие), достаточно убрать восклицательный знак — он означает отрицание. Например, данное правило перенаправляет запросы с дополнительного домена alias.com на основной сайт site.ru:

RewriteEngine on
RewriteCond % ^alias.com$
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 % !^X.X.X.X$
RewriteCond % !^site-closed.html
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 на логин вашего аккаунта.

У меня остались еще вопросы!

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

Источник

How to increase the execution timeout in php?

How to increase transaction timeout? I want to upload videos, but large size of videos not uploaded?

It throws error The process *** exceeded the timeout of 60 seconds.

14 Answers 14

You need to change some settings in your php.ini:

Where your PHP.ini is located depends on your system environment. For more information: http://php.net/manual/en/ini.list.php

You should be able to do during runtime too using

Читайте также:  Что такое чокер и кто его носит

or in your vhost-config

php_admin_value max_execution_time 10000

Having a global execution time limit that is LOW is mostly a good idea for performance-reasons on not-so-reliable applications. So you might want to only allow those scripts to run longer that absolutely have to.

p.s.: Dont forget about post_max_size and upload_max_filesize (like the first answer told allready)

To complete the answer of Hannes.

You need to change some setting in your php.ini:

If someone want put in unlimited (I don’t know why but if you want), you can set the time to 0:

You need to change some setting in your php.ini:

And if you don’t know where is your php.ini. You can do a file «name.php» in your server and put:

And on your website, you can see the config of your php.ini and it’s marked where is it.

Edit on 9 January 2015:

If you can’t access your php.ini, you have two more options.

You can set this line directly in your «name.php» file but I don’t find for upload_max_filesize for this option:

if what you need to do is specific only for 1 or 2 pages i suggest to use set_time_limit so it did not affect the whole application.

but ofcourse these 2 values (post_max_size & upload_max_filesize) are subject to investigate.

you either can set it via ini_set function

If you happen to be using Microsoft IIS server, in addition to the php.ini settings mentioned by others, you may need to increase the execution timeout settings for the PHP FastCGI application in the IIS Server Manager:

Step 1) Open the IIS Server Manager (usually under Server Manager in the Start Menu, then Tools / Internet Information Services (IIS) Manager).

Step 2) Click on the main connection (not specific to any particular domain).

Step 3) Under the IIS section, find FastCGI Settings (shown below).

Step 5) Check the timeouts (shown below).

In my case, the default timeouts here were 70 and 90 seconds; the former of which was causing a 500 Internal Server Error on PHP scripts that took longer than 70 seconds.

Источник

Как изменить параметры PHP

Как установить PHP на хостинг

Поддержка PHP присутствует на всех тарифных планах Hosting Linux и Hosting Windows, кроме тарифов Host-Lite и Win-Lite. Если у вас один из этих тарифов, повысьте тарифный план, чтобы включить поддержку PHP.

Как изменить параметры PHP

Для каждой версии PHP можно установить свои параметры. Инструкция для изменения параметров PHP подходит, только если у вас есть услуга хостинга Linux. Можно ли сменить те или иные параметры PHP на хостинге Windows, вы можете уточнить в службе техподдержки. Вы можете попробовать бесплатный хостинг для сайтов HTML с поддержкой PHP и MySQL в течение 14 дней тестового периода.

Чтобы изменить настройки PHP, нужно установить на файл php.ini права 600 (rw——-) или 644 (rw-r—r—) и затем внести в него изменения.

Чтобы установить права и внести изменения, следуйте инструкции для вашей хостинг-панели:

Обратите внимание! Если внешний вид вашей панели управления отличается от представленного в инструкции, кликните в левом нижнем углу «Старый интерфейс».

Выполнение этого шага зависит от пути, по которому хранятся настройки PHP. Подробнее в статье Где находятся настройки версий PHP в ISPmanager.

В разделе «Файлы» нажмите Диспетчер файлов. Перейдите в каталог php-bin/имя-домена. Измените права файла php.ini на 0600 или 0644. Нажмите Save:

Обратите внимание! Если внешний вид вашей панели управления отличается от представленного в инструкции, перейдите в раздел «Сайты и домены» и в правом верхнем углу измените вид на «Активный».

В разделе «Файлы» перейдите в каталог etc/имя-домена. Измените права файла php.ini: в строке «Владелец» поставьте чекбоксы Чтение и Запись, в строках «Группа» и «Остальные» поставьте чекбокс Чтение. Нажмите Применить:

Готово, изменения вступят в силу в течение минуты.

Примеры изменений настроек PHP

Основные директивы для настройки файла php.ini описаны в статье Настройка файла php.ini.

Чтобы предотвратить ситуацию, когда скрипт с плохим синтаксисом занимает всю доступную память сервера, нужно настроить директиву memory_limit. Она задаёт максимально допустимый объём памяти в байтах, который разрешается использовать скрипту. Некоторые CMS и плагины требуют установки определённого значения memory_limit.

Обратите внимание: на виртуальном хостинге есть технические ограничения на максимальный размер оперативной памяти на один процесс. Ограничения для каждого тарифа приведены на странице Технические характеристики хостинга.

Если данного порога вам не хватает, вы можете:

Чтобы предотвратить торможение сервера из-за скриптов с плохим синтаксисом, нужно настроить директиву max_execution_time. Она задаёт максимальное время в секундах, в течение которого скрипт должен полностью загрузиться. Если скрипт не загружается, анализатор синтаксиса завершает работу скрипта.

Читайте также:  манту чаще чем раз в год

С помощью директивы upload_max_filesize вы можете увеличить максимальный размер закачиваемого файла. На виртуальном хостинге можно загружать файлы размером до 256 МБ.

Если вам требуется загрузить файл размером более 256 МБ:

Директива max_input_vars задаёт количество входных переменных, которое может быть принято в одном запросе. Использование этой директивы снижает вероятность сбоев в случае атак.

При обновлении Bitrix можно столкнуться с проблемой: «Для обновления продукта необходимо удалить настройку PHP mbstring.func_overload. Пожалуйста, внесите необходимые изменения или обратитесь в службу технической поддержки вашего хостинга».

Решить эту проблему можно удалением параметра mbstring.func_overload. Как это сделать читайте в статье Как удалить настройку PHP mbstring.func_overload.

В версиях Bitrix версии 20.100.0 и ниже может возникнуть ошибка, которая связана с неправильными настройками параметров mbstring.func_overload и mbstring.internal_encoding.

Как решить эту проблему читайте в статье Ошибка PHP mbstring.internal_encoding.

Как включить обработку PHP в HTML

На хостинге Linux

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

Обратите внимание! Если внешний вид вашей панели управления отличается от представленного в инструкции, кликните в левом нижнем углу «Старый интерфейс».

Создайте файл с названием .htaccess или откройте его, если файл уже существует.

domain.ru — доменное имя вашего сайта;

u1234567 — логин вашего хостинга. Узнать его можно по инструкции.

php73 — ваша версия PHP. Узнать её можно по инструкции;

u1234567 — логин вашего хостинга. Узнать его можно по инструкции.

Создайте файл с названием .htaccess или откройте его, если файл уже существует. Добавьте в файл следующие строки:

domain.ru — доменное имя вашего сайта;

u1234567 — логин вашего хостинга. Узнать его можно по инструкции.

Обратите внимание! Если внешний вид вашей панели управления отличается от представленного в инструкции, перейдите в раздел «Сайты и домены» и в правом верхнем углу измените вид на «Активный».

Создайте файл с названием .htaccess или откройте его, если файл уже существует. Добавьте в файл следующие строки:

Если данное решение не работает, добавьте другие строки:

Источник

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

Поставил apache, php и т.п. Но есть проблема, время отдачи страниц, пшп-страница может работать только 30 секунд, допустим у меня там зацикленные отправки мыла написаны, на 1000 сообщений, из них успевает отработать только 428, потом процесс прерывается. Не пойму где увеличить это время для пшп?

Но есть проблема, время отдачи страниц, пшп-страница может работать только 30 секунд, допустим у меня там зацикленные отправки мыла написаны, на 1000 сообщений, из них успевает отработать только 428, потом процесс прерывается. Не пойму где увеличить это время для пшп?

Не надо говнокодить и осуществлять такие операции в PHP-процессе, который был запущен через HTTP-запрос.

php-cli по умолчанию не ограничен по времени + нужно прикрутить менеджер задач, хотя бы простой. А не тупо все N (N > 1000) записей/объектов перелопачивать сразу.

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

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

Или похожая задача. На WEB-сервере нужно запустить демон, например, чтобы он периодически проверял почту.

И в первой и во второй задаче, юзер через web-клиент инициирует процесс, но процесс должен уйти в фон, и пользователь может о нем забыть.

Доступа по ssh нет, только ftp с возможностью закачивать php (кстати, cgi тоже).

Есть инструменты для того чтобы такое реализовать?

т. е. задача может выполняться на фоне

и да, man 2 fork прочитай. А то не равен час станешь не мужиком.

Хм, как-то не подумал. Ладно, спасибо за наводку, буду укреплять свою позицию мужика 🙂

имхо я-бы в пхп просто записал-бы в БД «отправить почту», и сделал-бы простенький скрипт, который по крону каждую минуту почту отправляет. Тут надо не забыть сделать состояние «почта отправляется», ибо отправка может затянуться, и тогда другой экземпляр попытается отправить то же письмо второй раз. Этот скрипт(который по крону) я писал на bash’е, но это не важно. Важно, что-бы постоянно работало много скриптов сразу, т.к. основное время тратится на ожидание ответа от MTA.

Поставил apache, php и т.п. Но есть проблема, время отдачи страниц, пшп-страница может работать только 30 секунд, допустим у меня там зацикленные отправки мыла написаны, на 1000 сообщений, из них успевает отработать только 428, потом процесс прерывается. Не пойму где увеличить это время для пшп?

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

В-третьих, «пшп». К логопеду, быдло.

. и сделал-бы простенький скрипт, который по крону.

Источник

Образовательный портал