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");
}
?>
ТОП-10 популярных
Для работы с вещественными числами в MySQL предусмотрено три типа данных - это типы FLOAT, DOUBLE, DECIMAL. Числовой тип FLOAT...
БОЛЬШЕ БОЛЬШИХ LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Больше больших LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
НОУТБУК с блестящим экраном
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...
Иди и пиши. TravelMate C100
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...
Магнито-оптический дисковод DynaMO
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...
Компьютер для гурманов.«Эксимер ДМ»
Российская компания «Эксимер ДМ», известная как производитель настольных компьютеров, рабочих станций, серверов и ноутбуков, выступила техническим спонсором проведения торжеств, посвященных...
Российская компания «Эксимер ДМ», известная как производитель настольных компьютеров, рабочих станций, серверов и ноутбуков, выступила техническим спонсором проведения торжеств, посвященных...
Для длинных строк, т.е. строк длиннее 255 символов, в MySQL предусмотрены типы BLOB (Binary Large Object, большой двоичный объект) и...
В дополнение к календарным типам, предназначенным для хранения даты и времени отдельно, MySQL также поддерживает гибридные типы данных DATETIME и...
Вообще, к изменению настроек сервера прибегают очень редко. В MySQL программа заранее настроена так, чтобы соответствовать самым распространенным и основным...
PHP. Операционная система. Часть Девятнадцатая.
28-12-2009
<< Предыдущая статья | Следующая статья >> |
PHP. Операционная система. Часть Восемнадцатая. | PHP. Операционная система. Часть Двадцатая. |