Смекни!
smekni.com

Учебник php (стр. 24 из 26)

ob_get_length
Получение длины данных в буфере вывода.

Синтаксис :
string ob_get_length()

Если буферизация неактивна, возвращается false.

ob_end_flush
Вывод содержимого буфера.

Синтаксис :
void ob_end_flush(void)

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

flush
Вывод всего содержимого буфера.

Синтаксис :
void flush(void);

Функция воздействует только на буферизацию PHP и не может контролировать схему буферизации web-сервера или браузера.

Некоторые серверы, в особенности под Win32, буферизируют выводящиеся сценарием данные до того, как сценарий завершится и данные будут отосланы браузеру.

Браузер, в свою очередь, также может буферизировать получаемые данные до их отображения. Netscape, например, буферизирует текст до получения символа завершения строки или открывающего тега, а для таблиц - до получения тега </table> таблицы верхнего уровня.

ob_end_clean
Очисткабуфера.

Синтаксис :
void ob_end_clean(void);

Вызов функции отключает буферизацию на текущем уровне.

ob_implicit_flush
Установление режима буферизации.

Синтаксис :
void ob_implicit_flush([int flag]);

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

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

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

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().

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

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

<?phpfunction handler() { echo "&bsol;n* Failed * &bsol;n";} assert("&bsol;$a='1';");echo "a: $a &bsol;n";assert(0);// завершатьсценарийecho assert_options(ASSERT_BAIL, 1);// вызватьобработчикassert_options(ASSERT_CALLBACK, "handler");// не выдавать сообщений PHP@assert(--$a);// эта строка не будет выполненаecho "&bsol;n ... &bsol;n"

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

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

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

Синтаксис :
mixed assert_options(int parameter [, mixed value])

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

Параметр ini-параметр Умолчание Описание
ASSERT_ACTIVE asser.active 1 Разрешить указание кода в assert().
ASSERT_WARNING assert.warning 1 Выдавать предупреждение PHP.
ASSERT_BAIL assert.bail 0 Завершать выполнение, если "неистинно".
ASSERT_QUIET_EVAL assert.quiet_eval 0 Не выдавать сообщений.
ASSERT_CALLBACK assert_callback (null) Установить функцию в качестве обработчика "неистинных" assert().

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( "&bsol;$str = &bsol;"$str&bsol;";" );echo $str;?>

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

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

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

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

· 0 - NORMAL;

· 1 - ABORTED (прервано пользователем);

· 2 - TIMEOUT (истеклож время ожидания ответа).

При норамальном выполнении сценария активно состояние 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
Определения разрыва подключения пользователем.

Синтаксис :
int connection_aborted(void);

Функция connection_aborted() возвращает true, если подключение было разорвано пользователем.

connection_status
Определения статуса подключения.

Синтаксис :
int connection_status(void);

Возвращает значение битового поля, позволяющее выяснить в "завершающей" функции, был ли сценарий завершен досрочно и причину этого. Например, если возвращается 3 (ABORTED | TIMEOUT), то это означает, что время выполнения истекло, а также то, что пользователь отказался от загрузки страницы.

Если возвращается 0 (то есть значение NORMAL), то это означает, что выполнение сценария не было прервано.

connection_timeout
Определения наступления тайм-аута.

Синтаксис :
int connection_timeout(void);

Возвращает true, если время выполнения сценария истекло.

ignore_user_abort
Прерывание сценария при разрыве подключения.

Синтаксис :
int ignore_user_abort([int setting]);

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

register_shutdown_function
Устанавливает функцию, которая будет выполнена при завершении.

Синтаксис :
int register_shutdown_function(string func);

Регистрирует функцию с именем func в качестве функции, запускаемой после завершения сценария.

Заметьте: так как после завершения функции никакие средства вывода недоступны, это делает для функции, зарегистрированной в качестве "завершающей", недоступными обычные средства отладки, такие команды как print или echo.