integer connection_status()
Функция connection_status (листинг 9.62) возвращает целое число, описывающее состояние соединения с браузером. Биты целого числа используются для флагов, свидетельствующих о прерывании работы сценария или завершении работы сценария по тайм-ауту, т.е. двоичные значения изменяются в зависимости от любого из этих условий. Первый бит сигнализирует о том, была ли прервана работа сценария. Второй бит сигнализирует о достижении сценарием максимума времени, отведенного для его выполнения. Вместо использования значения 1 или 2 можно использовать более удобные константы CONNECTION_ABORTED и
CONNECTION_TIMEOUT. Есть еще константа CONNECTION_NORMAL, при нулевом значении которой биты не включаются.

Листинг 9.62. Функция connection_status

<?php
function cleanUp()
{
$status = connection_status(); $statusMessage = date("Y-m-d H:i:s"); $statusMessage .= " Статус $status. "; if($status & CONNECTION_ABORTED)
{
$statusMessage .= " Работа сценария была прервана.";
}
if($status & CONNECTION_TIMEOUT)
{
$statusMessage .= " Сценарий превысил тайм- аут.";
}
$statusMessage .= "n"; //записать значение в журнал
error_log($statusMessage, 3, "/tmp/status.log"); return(TRUE);
}
//Установить значение cleanUp для функции завершения
register_shutdown_function("cleanUp");
set_time_limit(3);
// Ожидать максимальное время выполнения
while(TRUE)
{
for($i=1; $i < 80;
{
print('x');
}
print('<br>');
}
print(" Задача завершена. n");
?>

array debug_backtrace()
Функция debug_backtrace (листинг 9.63) возвращает массив, описывающий стек вызова. Каждый элемент массива сам является массивом, в котором описывается вызываемая функция.
Следующий элемент присутствует в каждом массиве: файл, строка, функция и аргументы. Методы класса также содержат элементы класса и типа, последний из которых начинается с символа :: или ->, в зависимости от статически выполняемого метода или объекта. 
debug_print_backtrace()
В отличие от функции debug_backtrace, функция debug_print_backtrace распечатывает всю информацию из стека вызова, а не возвращает ее в массиве.

Листинг 9.63. Функция debug_backtrace

<?php
function A()
{
print_r(debug_backtrace());
}
class B
{
function testB()
{
A();
}
}
class C
{
function testC()
{
B::testB();
}
}
$c = new C;
$c->testC(); B::testB();
?>

string debug_zval_dump(...)
Функция debug_zval_dump (листинг 9.64) возвращает строку с описанием внутреннего значения Zend для каждого аргумента. Аргументы могут быть переменными или литералами. В описании приведены тип и длина переменной, значение и счетчик ссылок.

Листинг 9.64. Функция debug_zval_dump

<?php
//string(24) "/usr/local/apache/htdocs" refcount(2) debug_zval_dump($_SERVER["DOCUMENT_ROOT"]);
?>

boolean error_log(string message, integer type, string destination, string extra_headers)
Функция error_log (листинг 9.65) отправляет сообщение об ошибке по одному из четырех адресов в зависимости от типа аргумента. Значения типов аргументов приведены в табл. 9.16. Альтернативой функции error_log является функция syslog. 
j Листинг 9.65. Функция error log_
<?php
//отправить сообщение о регистрации пользователю root по почте error_log("The error_log is working", 1, "root", "");
?>
Операционная система
j Листинг 9.66. Функция extension_loaded_
<?php
if(extension_loaded("mysql"))
{
print(" расширение mysql загружено");
}
else
{
print(" расширение mysql не загружено");
}
?>

boolean function_exists(string function)
Функция function_exists (листинг 9.67) используется для проверки существования определенной функции. При этом следует заметить, что функция может существовать, но при этом быть невызываемой. Для определения этого можно воспользоваться функцией is_callable.

Листинг 9.67. Функция function_exists

<?php
$function = "date"; if(function_exists($function)) 
{
print($function . " существует");
}
?>

object get_browser(string user_agent)
Функция get_browser (листинг 9.68) для получения информации о возможностях браузера работает с файлом browscap.ini (возможности браузера). Аргумент user_agent является текстом, которым браузер идентифицирует себя во время HTTP-транзакции. Если этот аргумент пропущен, PHP использует заголовок запроса user-agent. Этот аргумент проверяется для всех браузеров в файле browscap.ini. Когда соответствие найдено, каждое из свойств становится свойством возвращаемого объекта.
Расположение файла browscap.ini задается в файле php.ini директивой browscap. Ошибка не детектируется, если директива не используется или если PHP не соответствует браузеру в строке файла browscap.ini. Однако возвращаемый объект не будет иметь свойств.
Microsoft предоставляет свой файл browscap.ini для использования своим Web-сер-вером, но он распространяется не бесплатно. Поэтому лучше всего воспользоваться возможностью, предоставляемой проектом Гарри Кита (Gary Keith) "Возможности браузера", который можно найти на Web-узле <http://www.garykeith.com/>.

Листинг 9.68. Функция get_browser

<?php
$browser = get_browser();
print("E>bi используете " . $browser->browser . "<br>n");
if($browser->javascript)
{
print("Ваш браузер поддерживает работу с JavaScript.<br>n");
}
?>