Время обработки запроса php

Время обработки запроса php

Поведение этих функций зависит от установок в php.ini .

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

Имя По умолчанию Место изменения Список изменений
assert.active «1» PHP_INI_ALL
assert.bail «0» PHP_INI_ALL
assert.warning «1» PHP_INI_ALL
assert.callback NULL PHP_INI_ALL
assert.quiet_eval «0» PHP_INI_ALL Удалено в PHP 8.0.0
assert.exception «0» PHP_INI_ALL
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
max_input_vars 1000 PHP_INI_PERDIR
zend.enable_gc «1» PHP_INI_ALL

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

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

Включение выполнение assert() . zend.assertions следует использовать вместо этого для управления поведением функции assert() .

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

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

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

Данная функциональность была УДАЛЕНА, начиная с PHP 8.0.0.

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

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

Директива позволяет включать и выключать динамическую подгрузку модулей PHP с помощью функции dl() .

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

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

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

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

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

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

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

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

User Contributed Notes

Источник

Увеличить время выполнения скрипта (PHP)

Увеличить время выполнения скрипта можно четырьмя способами. Два способа при помощи PHP функций ( set_time_limit(int seconds) и ini_set(string varname, string newvalue)), при помощи настроек файла php.ini или использования файла .htaccess .

set_time_limit()

Самый простой и быстрый способ использовать вначале выполнения скрипта функции void set_time_limit( int seconds ) , которая меняет значение параметра max_execution_time , установленное в файле php.ini (Значение устанавливается в секундах, по-умолчанию 30 секунд).

ini_set()

Второй способ позволяет менять настройки файла php.ini — функция ini_set(string varname, string newvalue)) .

Примечание: функцию ini_set() не получится использовать, если PHP запущен в безопасном режиме.

php.ini

Если у вас есть доступ к настройкам файла php.ini , то в нем можно изменить настройку max_execution_time.

htaccess

Третий способ при помощи прописания параметров в файле .htaccess .

Заключение

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

Категории

Читайте также

  • Как увеличить объем загружаемого файла (PHP)
  • Включить-отключить вывод ошибок (PHP)
  • Время выполнения скрипта (PHP)
  • Дата вчера сегодня завтра (PHP)
  • Конвертировать миллисекунды в time.Time (GoLang)
  • Первые N символов строки цифры (PHP)
  • Преобразовать дату в секунды (PHP)
  • isset vs array_key_exists (PHP)
  • Количество секунд от начала дня (PHP)
  • foreach vs array_walk (PHP)
  • Singleton Trait (PHP)
  • Редирект (PHP)

Комментарии

у меня не открывается игра контра сити

Вход на сайт

Введите данные указанные при регистрации:

Социальные сети

Вы можете быстро войти через социальные сети:

Источник

set_time_limit

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.

Parameters

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

Return Values

Returns true on success, or false on failure.

Notes

Note:

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. This is not true on Windows where the measured time is real.

See Also

User Contributed Notes 25 notes

Both set_time_limit(. ) and ini_set(‘max_execution_time’. ); won’t count the time cost of sleep,file_get_contents,shell_exec,mysql_query etc, so i build this function my_background_exec(), to run static method/function in background/detached process and time is out kill it:

my_exec.php:
function my_background_exec ( $function_name , $params , $str_requires , $timeout = 600 )
< $map =array( '"' =>‘\»‘ , ‘$’ => ‘\$’ , ‘`’ => ‘\`’ , ‘\\’ => ‘\\\\’ , ‘!’ => ‘\!’ );
$str_requires = strtr ( $str_requires , $map );
$path_run = dirname ( $_SERVER [ ‘SCRIPT_FILENAME’ ]);
$my_target_exec = «/usr/bin/php -r \»chdir(‘ < $path_run >‘); < $str_requires >\\\$params=json_decode(file_get_contents(‘php://stdin’),true);call_user_func_array(‘ < $function_name >‘, \\\$params);\»» ;
$my_target_exec = strtr ( strtr ( $my_target_exec , $map ), $map );
$my_background_exec = «(/usr/bin/php -r \»chdir(‘ < $path_run >‘); < $str_requires >my_timeout_exec(\\\» < $my_target_exec >\\\», file_get_contents(‘php://stdin’), < $timeout >);\» my_timeout_exec ( $my_background_exec , json_encode ( $params ), 2 );
>

function my_timeout_exec ( $cmd , $stdin = » , $timeout )
< $start = time ();
$stdout = » ;
$stderr = » ;
//file_put_contents(‘debug.txt’, time().’:cmd:’.$cmd.»\n», FILE_APPEND);
//file_put_contents(‘debug.txt’, time().’:stdin:’.$stdin.»\n», FILE_APPEND);

$process = proc_open ( $cmd , [[ ‘pipe’ , ‘r’ ], [ ‘pipe’ , ‘w’ ], [ ‘pipe’ , ‘w’ ]], $pipes );
if (! is_resource ( $process ))
‘1’ , ‘stdout’ => $stdout , ‘stderr’ => $stderr );
>
$status = proc_get_status ( $process );
posix_setpgid ( $status [ ‘pid’ ], $status [ ‘pid’ ]); //seperate pgid(process group id) from parent’s pgid

stream_set_blocking ( $pipes [ 0 ], 0 );
stream_set_blocking ( $pipes [ 1 ], 0 );
stream_set_blocking ( $pipes [ 2 ], 0 );
fwrite ( $pipes [ 0 ], $stdin );
fclose ( $pipes [ 0 ]);

if ( time ()- $start > $timeout )
< //proc_terminate($process, 9); //only terminate subprocess, won't terminate sub-subprocess
posix_kill (- $status [ ‘pid’ ], 9 ); //sends SIGKILL to all processes inside group(negative means GPID, all subprocesses share the top process group, except nested my_timeout_exec)
//file_put_contents(‘debug.txt’, time().»:kill group \n», FILE_APPEND);
return array( ‘return’ => ‘1’ , ‘stdout’ => $stdout , ‘stderr’ => $stderr );
>

$status = proc_get_status ( $process );
//file_put_contents(‘debug.txt’, time().’:status:’.var_export($status, true).»\n»;
if (! $status [ ‘running’ ])
< fclose ( $pipes [ 1 ]);
fclose ( $pipes [ 2 ]);
proc_close ( $process );
return $status [ ‘exitcode’ ];
>

usleep ( 100000 );
>
>
?>

a_class.php:
class A
static function jack ( $a , $b )
< sleep ( 4 );
file_put_contents ( ‘debug.txt’ , time (). «:A::jack:» . $a . ‘ ‘ . $b . «\n» , FILE_APPEND );
sleep ( 15 );
>
>
?>

test.php:
require ‘my_exec.php’ ;

my_background_exec ( ‘A::jack’ , array( ‘hello’ , ‘jack’ ), ‘require «my_exec.php»;require «a_class.php»;’ , 8 );
?>

Источник

Читайте также:  Java arraylist add all array
Оцените статью