KnigaRead.com/

White cat - Справочник по PHP

На нашем сайте KnigaRead.com Вы можете абсолютно бесплатно читать книгу онлайн white cat, "Справочник по PHP" бесплатно, без регистрации.
Перейти на страницу:

assert(0);

// завершать сценарий

echo assert_options(ASSERT_BAIL, 1);

// вызвать обработчик

assert_options(ASSERT_CALLBACK, "handler");

// не выдавать сообщений PHP

@assert(--$a);

// эта строка не будет выполнена

echo "n ... n";

?>

Приведенный пример выведет:

a: 1Warning: Assertion failed in file.php on line 200* Failed *


assert_options


Определение параметров assert.

Синтаксис:

mixed assert_options(int parameter [, mixed value])

Эта функция позволяет определить поведение конструкции assert().

Возвращается предыдущее значение параметра (или значение false при ошибке), указанного в первом аргументе одной из следующих констант:


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


eval


Производит выполнение строки содержащей PHP код.

Синтаксис:

void eval(string code_str);

Функция eval() производит выполнение строки, заданной в code_str содержащей PHP код. Кстати, это может пригодиться для сохранения кода в текстовом поле базы данных для более позднего выполнения. Не забывайте, что указанный в строке код должен быть синтаксически правильным (например, должны присутствовать точки с запятой после каждой команды и т.п.), в противном случае сценарий будет завершен в этой строке с ошибкой. Учитывайте также, что те значения переменных, которые будут установлены в данной строке, будут использоваться в оставшейся части сценария.

При изменении переменных значений в eval() эти переменные будут изменены и в основных данных.

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

<?php

$string = 'cup';

$name = 'coffee';

$str = 'This is a $string with my $name in it.

';

echo $str;

eval( "$str = "$str";" );

echo $str;

?>

Результатом выполнения этого кода будет:

This is a $string with my $name in it.This is a cup with my coffee in it.

Функции управления сценарием


set_time_limit


Установка предельного времени исполнения сценария.

Синтаксис:

void set_time_limit(int seconds)

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

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

Отсчет времени начинается от момента вызова функции. Например, если сценарий уже выполнялся в течении 15 секунд, а затем вызывается функция set_time_limit(20), то общее максимальное время исполнения сценария становится равным 35 секундам.

Если сценарий выполняется в безопасном режиме (с установленным параметром safe mode), то тогда вызов этой функции игнорируется и используется значение из файла конфигурации.


sleep


Задержка выполнения сценария.

Синтаксис:

void sleep(int seconds);

Фукция sleep() выполняет задержку выполнения сценария в секундах (seconds).


usleep


Задержка выполнения сценария в микросекундах.

Синтаксис:

void usleep(int micro_seconds);

Задержка выполнения сценария в микросекундах (micro_seconds).

Эта функция не работает в Windows.


die


Вывод сообщения и завершение текущего сценария.

Синтаксис:

void die(string message);

Эта функция выводит сообщение и прекращает выполнение текущего скрипта. Не возвращает значение.

<?php

$filename = '/path/to/data-file';

$file = fopen($filename, 'r')

or die "unable to open file ($filename)";

?>


exit


Завершает текущий сценарий.

Синтаксис:

void exit(void);

Эта функция завершает текущий сценарий. Не возвращает значение.


assert


Проверка истинности значения.

Синтаксис:

int assert(string|bool assertion);

В качестве аргумента функции может быть указано значение или строка, содержащая код PHP (как в функции eval()). Функция проверяет, является ли значение (или выражение) равным false, и, если это так, выполняет определенные действия.

Поведение функции определяется установками в файле конфигурации или при вызове функции assert_options().

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

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

<?php

function handler() {

echo "n* Failed * n";

}


assert("$a='1';");

echo "a: $a n";

assert(0);

// завершать сценарий

echo assert_options(ASSERT_BAIL, 1);

// вызвать обработчик

assert_options(ASSERT_CALLBACK, "handler");

// не выдавать сообщений PHP

@assert(--$a);

// эта строка не будет выполнена

echo "n ... n";

?>

Приведенный пример выведет:

a: 1Warning: Assertion failed in file.php on line 200* Failed *


assert_options


Определение параметров assert.

Синтаксис:

mixed assert_options(int parameter [, mixed value])

Эта функция позволяет определить поведение конструкции assert().

Возвращается предыдущее значение параметра (или значение false при ошибке), указанного в первом аргументе одной из следующих констант:


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


eval


Производит выполнение строки содержащей PHP код.

Синтаксис:

void eval(string code_str);

Функция eval() производит выполнение строки, заданной в code_str содержащей PHP код. Кстати, это может пригодиться для сохранения кода в текстовом поле базы данных для более позднего выполнения. Не забывайте, что указанный в строке код должен быть синтаксически правильным (например, должны присутствовать точки с запятой после каждой команды и т.п.), в противном случае сценарий будет завершен в этой строке с ошибкой. Учитывайте также, что те значения переменных, которые будут установлены в данной строке, будут использоваться в оставшейся части сценария.

При изменении переменных значений в eval() эти переменные будут изменены и в основных данных.

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

<?php

$string = 'cup';

$name = 'coffee';

$str = 'This is a $string with my $name in it.

';

echo $str;

eval( "$str = "$str";" );

echo $str;

?>

Результатом выполнения этого кода будет:

This is a $string with my $name in it.This is a cup with my coffee in it.

Статус подключений

Внутренне PHP имеет три статуса подключения:

При нормальном выполнении сценария активно состояние NORMAL. Если во время загрузки страницы пользователь нажал кнопку STOP, активным становится состояние ABORTED. Если сценарий выполняется дольше отведенного ему времени, устанавливается флаг состояния TIMEOUT. Возможно определить, как должен вести себя сценарий в зависимости от этих условий.

Если требуется, чтобы сценарий продолжал свое выполнение при разрыве соединения пользователем, нужно установить в файле конфигурации значение параметра ignore_user_abort = 1 (это также можно сделать в файлах конфигурации Apache). Можно также воспользоваться функцией ignore_user_abort(). В противном случае, сценарий завершается.

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

Если функцией register_shutdown_function() была установлена функция "запускаемая при завершении сценария", то, вне зависимости от статуса подключения, она будет исполнена перед тем, как сценарий завершится. И в "завершающей" функции можно будет выяснить (с помощью функции: connection_aborted(), connection_timeout() и connection_status()), был ли сценарий завершен нормально или досрочно.


connection_aborted


Определения разрыва подключения пользователем.

Синтаксис:

Перейти на страницу:
Прокомментировать
Подтвердите что вы не робот:*