php ini время выполнения php скрипта

Как увеличить время выполнения 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-файл в корне вашего сайта, где выведите значение установленного времени:

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

Источник

Php ini время выполнения php скрипта

Настройки PHP/Параметры конфигурации информации

ИмяПо умолчаниюМесто измененияСписок изменений
assert.active«1»PHP_INI_ALL
assert.bail«0»PHP_INI_ALL
assert.warning«1»PHP_INI_ALL
assert.callbackNULLPHP_INI_ALL
assert.quiet_eval«0»PHP_INI_ALL
assert.exception«0»PHP_INI_ALLДоступна с версии PHP 7.0.0.
enable_dl«1»PHP_INI_SYSTEMЭта возможность устарела и будет обязательно удалена в будущем.
max_execution_time«30»PHP_INI_ALL
max_input_time«-1»PHP_INI_PERDIR
max_input_nesting_level«64»PHP_INI_PERDIRДоступна с PHP 5.2.3.
max_input_vars1000PHP_INI_PERDIRДоступна с PHP 5.3.9.
magic_quotes_gpc«1»PHP_INI_PERDIRУдалена в PHP 5.4.0.
magic_quotes_runtime«0»PHP_INI_ALLУдалена в PHP 5.4.0.
zend.enable_gc«1»PHP_INI_ALLДоступна с PHP 5.3.0.

Для подробного описания констант PHP_INI_*, обратитесь к разделу Где могут быть установлены параметры конфигурации.

Краткое разъяснение конфигурационных директив.

Завершение работы скрипта при провале проверки утверждений.

Вызов предупреждений PHP для каждой проваленной проверки утверждения.

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

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

Генерирует исключение AssertionError для неудачной проверки утверждения.

Главной причиной, по которой требуется выключение динамической загрузки, является безопасность. С помощью динамической загрузки можно обойти все open_basedir ограничения. По умолчанию динамическая загрузка разрешена.

Данная возможность была объявлена УСТАРЕВШЕЙ, начиная с PHP 5.3.0 и была УДАЛЕНА в PHP 5.4.0.

Задаёт режим magic_quotes для GPC (Get/Post/Cookie) операций. Если magic_quotes включён, все ‘ (одинарные кавычки), » (двойные кавычки), \ (обратный слеш) и NUL автоматически экранируются обратным слешем.

Данная возможность была объявлена УСТАРЕВШЕЙ, начиная с PHP 5.3.0 и была УДАЛЕНА в PHP 5.4.0.

Включает или отключает сборщик циклических ссылок.

Источник

Проблемы «долгих» скриптов PHP

Внешний таймаут

В первую очередь нужно установить подходящее значение параметра max_execution_time в конфиге PHP.

Веб-сервер может также проксировать запросы на другой веб-сервер, который и запустит PHP скрипт (не редкий пример, nginx — фронтенд, apache — бэкэнд). В этом случае на проксирующем веб-сервере необходимо также настраивать таймаут проксирования. Для apache ProxyTimeout, для nginx proxy_read_timeout.

Прерывание пользователем

Если скрипт запускается в ответ на HTTP-запрос, то пользователь может остановить выполнение запроса в своем браузере, в этом случае прекратит свою работу и PHP скрипт. Если же требуется, чтобы скрипт продолжил свою работу даже после остановки запроса, установите в TRUE параметр ignore_user_abort в конфиге PHP.

Потеря открытых соединений

В таких случаях следует в первую очередь попробовать увеличить таймаут соединения. Например, для MySQL можно выполнить запрос (спасибо Snowly)

Параллельный запуск

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

Нагрузка на веб-сервер

В случаях, когда долгие скрипты запускаются через веб-сервер, соединение клиента с этим самым веб-сервером остается открытым до тех пор, пока не отработает скрипт. Это не есть хорошо, т.к. задача веб-сервера как можно быстрее обработать запрос и отдать результат. Если же соединение остается висеть, то один из воркеров (процессов) веб-сервера на долгое время будет занят. А если одновременно будет запущено достаточно много таких скриптов, то они могут занять все (ну или почти все) свободные воркеры (для apache см. MaxClients), и веб-сервер просто не сможет обрабатывать другие запросы.

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

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

Источник

Изменяем лимит «max_execution_time» в PHP конфигурации на Open Server.

php ini время выполнения php скрипта. %25D1%25862. php ini время выполнения php скрипта фото. php ini время выполнения php скрипта-%25D1%25862. картинка php ini время выполнения php скрипта. картинка %25D1%25862. Если вы разрабатываете крупный проект, то на обработку некоторых данных ему может потребоваться большое количество времени. На разных хостингах стоят свои лимиты на такие действия, и если сюда вас привела необходимость увеличить это время – то я подробно расскажу, как это можно сделать.

При обновлении OpenCart 3.0.3.2 до версии 3.0.3.7 на Open Server, получил ошибку при попытке выполнить обновление:

Fatal error: Maximum execution time of 60 seconds exceeded

Данная ошибка означает, что выполнение определенной операции, привело к превышению временного лимита, указанного в конфигурации PHP. Вы можете изменить значение этого параметра, который указывается в секундах. По умолчанию в Open Server выставлен лимит в 60 секунд, для параметра «max_execution_time» в настройках PHP. Зачастую, выполнение скрипта не превышает 30 сек и данного лимита в 60 секунд, должно вполне хватать.

Если данная ошибка, возникает у вас на хостинге, настоятельно рекомендую обратиться к вашему хостинг-провайдеру для решения данной проблемы. На некоторых виртуальных хостингах (shared-хостинг), может стоять лимит на 30 секунд и нет возможности изменить его через админку.

Если у вас возникает ошибка «Fatal error: Maximum execution time of 60 seconds exceeded» при работе с Open Server, необходимо изменить время для выполнения скрипта в конфигурации PHP. Рассмотрим два способа, как это сделать.

На заметку.
Не пытайтесь вносить правки в файл конфигурации PHP по пути: «C:\OpenServer\modules\php\PHP-ваша_версия». Файл «php.ini» находящийся по данному пути, является временным и его бесполезно править. При перезапуске Open Server, файл перезаписывается с настройками по умолчанию. Ниже, описаны рабочие способы, которые помогут произвести нужные манипуляции с параметрами PHP.

Способ 1.

Увеличить лимит времени «max_execution_time», через интерфейс Open Server.

Открываем системный трей (1.) и щелкаем правой кнопкой мыши по флажку (2.) Open Server. Переходим по пути:

php ini время выполнения php скрипта. op3. php ini время выполнения php скрипта фото. php ini время выполнения php скрипта-op3. картинка php ini время выполнения php скрипта. картинка op3. Если вы разрабатываете крупный проект, то на обработку некоторых данных ему может потребоваться большое количество времени. На разных хостингах стоят свои лимиты на такие действия, и если сюда вас привела необходимость увеличить это время – то я подробно расскажу, как это можно сделать.

Обратите внимание, что у вас, может отличатся версия PHP, в зависимости от того, какую версию вы выбрали. В моем примере, это PHP 7.3.

В открывшемся окне

php ini время выполнения php скрипта. op4. php ini время выполнения php скрипта фото. php ini время выполнения php скрипта-op4. картинка php ini время выполнения php скрипта. картинка op4. Если вы разрабатываете крупный проект, то на обработку некоторых данных ему может потребоваться большое количество времени. На разных хостингах стоят свои лимиты на такие действия, и если сюда вас привела необходимость увеличить это время – то я подробно расскажу, как это можно сделать.

php ini время выполнения php скрипта. op5. php ini время выполнения php скрипта фото. php ini время выполнения php скрипта-op5. картинка php ini время выполнения php скрипта. картинка op5. Если вы разрабатываете крупный проект, то на обработку некоторых данных ему может потребоваться большое количество времени. На разных хостингах стоят свои лимиты на такие действия, и если сюда вас привела необходимость увеличить это время – то я подробно расскажу, как это можно сделать.

В открывшемся поле поиска (1.), вставляем «max_execution_time» (без кавычек) и получаем результат (2.):

php ini время выполнения php скрипта. op17. php ini время выполнения php скрипта фото. php ini время выполнения php скрипта-op17. картинка php ini время выполнения php скрипта. картинка op17. Если вы разрабатываете крупный проект, то на обработку некоторых данных ему может потребоваться большое количество времени. На разных хостингах стоят свои лимиты на такие действия, и если сюда вас привела необходимость увеличить это время – то я подробно расскажу, как это можно сделать.

Теперь, меняем лимит «60», на «6000» к примеру. Или, на любой другой показатель. В своем примере, изменю лимит «max_execution_time» на «6000»:

php ini время выполнения php скрипта. op19. php ini время выполнения php скрипта фото. php ini время выполнения php скрипта-op19. картинка php ini время выполнения php скрипта. картинка op19. Если вы разрабатываете крупный проект, то на обработку некоторых данных ему может потребоваться большое количество времени. На разных хостингах стоят свои лимиты на такие действия, и если сюда вас привела необходимость увеличить это время – то я подробно расскажу, как это можно сделать.

php ini время выполнения php скрипта. op20. php ini время выполнения php скрипта фото. php ini время выполнения php скрипта-op20. картинка php ini время выполнения php скрипта. картинка op20. Если вы разрабатываете крупный проект, то на обработку некоторых данных ему может потребоваться большое количество времени. На разных хостингах стоят свои лимиты на такие действия, и если сюда вас привела необходимость увеличить это время – то я подробно расскажу, как это можно сделать.

Закрываем окно и перезапускаем сервер Open Server. Для этого, открываем системный трей (1.) и щелкаем по флажку (2.) правой кнопкой мыши, выбираем «Перезапустить» (3.):

php ini время выполнения php скрипта. op10. php ini время выполнения php скрипта фото. php ini время выполнения php скрипта-op10. картинка php ini время выполнения php скрипта. картинка op10. Если вы разрабатываете крупный проект, то на обработку некоторых данных ему может потребоваться большое количество времени. На разных хостингах стоят свои лимиты на такие действия, и если сюда вас привела необходимость увеличить это время – то я подробно расскажу, как это можно сделать.

После этого, все должно работать.

Стабильный и доступный виртуальный хостинг и VPS для сайтов любой любой сложности и нагруженности. Защита от DDoS и качественное администрирование. Хостинг-провайдер для тех, кто ценит стабильность и безопасность.

Способ 2.

Увеличить лимит времени «max_execution_time», через сторонний редактор кода в Open Server.

В папке config, необходимо найти файл « PHP_ваша_версия_php.ini ».

В моем примере, выберу файл « PHP_7.3_php.ini » :

php ini время выполнения php скрипта. op11. php ini время выполнения php скрипта фото. php ini время выполнения php скрипта-op11. картинка php ini время выполнения php скрипта. картинка op11. Если вы разрабатываете крупный проект, то на обработку некоторых данных ему может потребоваться большое количество времени. На разных хостингах стоят свои лимиты на такие действия, и если сюда вас привела необходимость увеличить это время – то я подробно расскажу, как это можно сделать.

Чтобы открыть файл и раскомментировать « ionCube » в конфигурации PHP, используйте Notepad++ или любой другой редактор.

Открываем файл « PHP_ваша_версия_php.ini » и ищем

В своем примере, воспользуюсь редактором Visual Studio Code и открою в нем файл « PHP_7.3_php.ini » :

php ini время выполнения php скрипта. op12. php ini время выполнения php скрипта фото. php ini время выполнения php скрипта-op12. картинка php ini время выполнения php скрипта. картинка op12. Если вы разрабатываете крупный проект, то на обработку некоторых данных ему может потребоваться большое количество времени. На разных хостингах стоят свои лимиты на такие действия, и если сюда вас привела необходимость увеличить это время – то я подробно расскажу, как это можно сделать.

php ini время выполнения php скрипта. op13. php ini время выполнения php скрипта фото. php ini время выполнения php скрипта-op13. картинка php ini время выполнения php скрипта. картинка op13. Если вы разрабатываете крупный проект, то на обработку некоторых данных ему может потребоваться большое количество времени. На разных хостингах стоят свои лимиты на такие действия, и если сюда вас привела необходимость увеличить это время – то я подробно расскажу, как это можно сделать.

php ini время выполнения php скрипта. op21. php ini время выполнения php скрипта фото. php ini время выполнения php скрипта-op21. картинка php ini время выполнения php скрипта. картинка op21. Если вы разрабатываете крупный проект, то на обработку некоторых данных ему может потребоваться большое количество времени. На разных хостингах стоят свои лимиты на такие действия, и если сюда вас привела необходимость увеличить это время – то я подробно расскажу, как это можно сделать.

php ini время выполнения php скрипта. op22. php ini время выполнения php скрипта фото. php ini время выполнения php скрипта-op22. картинка php ini время выполнения php скрипта. картинка op22. Если вы разрабатываете крупный проект, то на обработку некоторых данных ему может потребоваться большое количество времени. На разных хостингах стоят свои лимиты на такие действия, и если сюда вас привела необходимость увеличить это время – то я подробно расскажу, как это можно сделать.

php ini время выполнения php скрипта. op23. php ini время выполнения php скрипта фото. php ini время выполнения php скрипта-op23. картинка php ini время выполнения php скрипта. картинка op23. Если вы разрабатываете крупный проект, то на обработку некоторых данных ему может потребоваться большое количество времени. На разных хостингах стоят свои лимиты на такие действия, и если сюда вас привела необходимость увеличить это время – то я подробно расскажу, как это можно сделать.

Таким образом, мы изменили с вами лимит «max_execution_time».

После этого, все должно работать.

Надеюсь, данная заметка, будет вам полезной. Успехов.

Источник

Конфигурация времени выполнения

Содержание

User Contributed Notes 14 notes

For those people who want to use the PHPRC environment variable:
You have to specify the path to the directory containing your php.ini, not the direct path to the php.ini.

Example (php.ini resides in /your/path/php.ini):
right:
export PHPRC=/your/path

Be sure to use double quotes in the php.ini file. For instance:

(lines broken for readability)

this will work:
# xdebug debugging
zend_extension=»/usr/local/php5/lib/php/extensions
/no-debug-non-zts-20060613/xdebug.so»

this won’t:
# xdebug debugging
zend_extension=’/usr/local/php5/lib/php/extensions
/no-debug-non-zts-20060613/xdebug.so’

You’ll get this error:
Failed loading ‘/usr/local/php5/lib/php/extensions/
no-debug-non-zts-20060613/xdebug.so’: (null)

So. double quotes are the way! I know this is obvious, but it’s a good thing to remember for the php.ini file.

In order to get PHP 5.2 stable running on Windows Server 2003 x64 (IIS 6.0), I discovered three things (in addition to the other comments above):

* Some PHP web applications make use of the SCRIPT_NAME server variable which is not available under CGI. You have to use php5isapi.dll, which is a 32 bit dll, so you have to run IIS in 32 bit mode. Confer http://support.microsoft.com/kb/894435. This applies to all ISAPI extensions and not just ASP.NET.

* It appears you must leave the doc_root entry in php.ini blank. At least, that is what finally made my installation work. (Note that others have suggested to set it to e.g. C:\inetpub\wwwroot or equivalent. That won’t work if your server hosts more than one domain, each placed in a separate directory.)

* If you are e.g. using MySQL you will have to edit php.ini. In order for it to be found, you must set the PHPRC system environment variable or the registry entry. Note that if you edit the registry using regedit.exe, the PHP key should be placed under the [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node] key. This happens automatically if you set it using a 32 bit legacy application.

About Apache 2.0 module:

For whatever reason, the Windows installer for PHP/5.2.3 tries to set the PHPIniDir directive using «\\» as directory separator:

PHPIniDir «C:\\Archivos de programa\\PHP\\»

It didn’t work for me until I edited httpd.conf and replaced it with «/»:

PHPIniDir «C:/Archivos de programa/PHP/»

To run separate apache and php processes on centos (at least) without
having to compile and install separate versions for every instance
this should work:

Install apache and php with yum.

This will give you (for the first instance):

/etc/httpd/*, /etc/sysconfig/httpd, /etc/init.d/httpd, /etc/php.ini
and /etc/php.d/*.

Copy all this stuff to:
/etc/httpd2/*, /etc/sysconfig/httpd2, /etc/init.d/httpd2, /etc/php2.ini
and /etc/php2.d/*.

Edit the apache config files in /etc/httpd2/* to reflect the new
ports you want to have this apache listen on (don’t forget ssl.conf
under conf.d) and any other differing settings, like log file
destinations and virtualhosts.

Edit the php2.ini for any specific settings you want the other php
instance to have.

To have a completely separate php in this new apache instance with its own
modules included, edit /etc/sysconfig/httpd2 and add the following:

PHPRC=/etc/php2.ini
export PHPRC
PHP_INI_SCAN_DIR=/etc/php2.d
export PHP_INI_SCAN_DIR

This will set the environment variables for the second apache/php
instance before it is started.

Then edit /etc/init.d/httpd2 and change all references to httpd
(like lockfile, pidfile and sysconfig) to httpd2. Don’t touch the
executable name, though 🙂

.. so this apache can find its own configuration file.

Please try this: set Apache2.2 service Startup Type to MANUAL. If not, it does not see to reload php.ini, no matter how many times you stop and start.

For windows with limited file permission (Windows XP)

1. Install Apache in your folder profile «C:\Documents and Settings\your_profile»

2. Add the following directives to you httpd.conf
PHPINIDir «C:\Documents and Settings\your_profile\php»

LoadModule php5_module «C:\Documents and Settings\your_profile\php\php5apache2_2.dll»

3. Edit the following directive to you php.ini
extension_dir = «C:\Documents and Settings\your_profile\php\ext»

4. Move the file libmysql.dll from C:\Documents and Settings\your_profile\php\ to C:\Documents and Settings\your_profile\php\ext\

5. Restart httpd using command line

w2k, apache 1.3.29, php 5.2.6: c:\php\php.ini was not found until the environment variable PHPRC was set to «c:\php», even though php was used as a module, not CGI.

just adding c:\php to the path was not adequate.

phpinfo() still shows «Configuration File (php.ini) Path» to be C:\WINNT, but «Loaded Configuration File» now correctly displays «C:\php\php.ini».

initially the problem appeared to be simply that the mysql extension was not loading; in fact, the problem was more fundamental (php.ini not found) but because php will still work with defaults, this was not obvious.

Run php 4 and php 5.2.x on the same machine with IIS 6.0 as ISAPI.

1. Extract the ZIP packages of both php 4 & php 5 (not the Windows Installer) to c:\php4 & c:\php5 respectively

2. Setup the corresponding php.ini files in c:\php4 and c:\php5

3. Add the Web Service Extensions for php4 and php5. For php4 use c:\php4\sapi\php4isapi.dll, php5 use c:\php5\php5isapi.dll

4. Add the following registry keys:

5. Add c:\php4 to the PATH environment variable.

6. Associate each web site in IIS with the corresponding php version.

Note: That should work, test with phpinfo() in each site. You may need to refer to the php documentation if we missed any other settings.

Setting php.ini location for PHP working as Apache module (without use SetEnv directive in httpd.conf):

Before start Apache, set the PHPRC environment variable to the path where php.ini should be loaded, for example:

PHPRC=/etc/php4/apache-another-path
export PHPRC

In Debian we can do this way:

In /etc/init.d/apache (the script that loads apache web server) we have this line:

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *