9.4. Отладка
Функции отладки помогают определить, что же происходит на самом деле с неработающим сценарием. Некоторые из этих функций позволяют получить диагностическую информацию, имеющуюся в любом сценарии. Другие обмениваются информацией с системным журналом или удаленным отладчиком. Практические подходы к отладке подробно описываются в главе 28, "Эффективность и отладка".
assert(boolean expression) assert(string expression)
Функция assert (листинг 9.59) тестирует выражение (аргумент expression). Если возвращается результат TRUE, никаких действий не предпринимается и сценарий продолжает работу. При возвращении значения FALSE дальнейшее поведение сценария диктуется параметрами assertion. По умолчанию параметры assertions не активизированы, а это означает, что они будут попросту проигнорированы. Для их активизации используются установки assert_options. Оценка суждений является отличным способом добавления в программный код проверки его функционирования, особенно при строгой проверке, которые необходимы при разработке, но не при работе программного продукта. Если параметр expression является строкой, PHP оценит ее с помощью функции eval . Это позволит сэкономить время на синтаксический анализ, необходимый для анализа выражения.
| Листинг 9.59. Функция assert_
<?php
// создать обычную функцию оценки
function failedAssertion($file, $line, $expression) {
print("E> строке $line, файла '$file' "); prinM"^ прошла следующая оценка: '$expression'<br>n");
}
// включить параметры оценки assert_options(ASSERT_ACTIVE, TRUE); // обработка в случае сбоя оценки
assert_options(ASSERT_CALLBACK, "failedAssertion");
// оценить ложное выражение
assert("1 == 2");
value assert_options(integer flag, value)
Функция assert_options предназначена для установки и получения значений флагов оценки. В табл. 9.15 приведены флаги и их значения. Большинство параметров являются логическими, так как они могут принимать только значения on/off. Исключением является параметр установки функции callback, который принимает имя функции, вызываемой при неуспешном завершении оценки. Эта функция вызывается с указанием трех аргументов: имя файла, номер строки и выражение, давшее значение FALSE.
Если вы хотите зарегистрировать для функции callback метод класса, ей следует передать массив с двумя элементами. Первым является имя класса, вторым - имя метода. Для того чтобы зарегистрировать метод объекта, передайте ссылку на объект в качестве первого элемента.
В табл. 9.15 описываются параметры, устанавливаемые с помощью функции assert.
boolean class_exists(string name)
Функция class_exists (листинг 9.60) проверяет существование класса.
Листинг 9.60. Функция class_exists
<?php
class Counter
{
private $value; function Counter()
$this->value = 0; function getValue()
return($this->value); function increment()
$this->value++;
}}
if(!class_exists('counter'))
{
print('Класс counter не существует!'); exit();
}
$c = new Counter; $c->increment(); $c->increment(); print($c->getValue());
?>
closelog()
Функция closelog завершает любое подключение к системному журналу. Вызов этой функции не является обязательным, так как по необходимости PHP может сам завершить соединение. Пример использования этой функции можно найти в примере для функции syslog.
boolean connection_aborted()
Функция connection_aborted (листинг 9.61) используется для проверки прерывания запроса к сценарию. Пользователь может это сделать, щелкнув в браузере на кнопке Остановить или полностью завершив работу браузера. Обычно сценарий автоматически завершает работу при выходе из браузера. Однако это поведение можно изменить с помощью функции ignore_user_abort. Установить обработку прерывания работы можно в конфигурационном файле php.ini или с помощью директивы Web-сервера Apache. PHP может определить прерывания работы только после попытки отправки данных в браузер.
Листинг 9.61. Функция connection_aborted
<?php
// разрешить выполнение сценария после прерывания ignore_user_abort(TRUE); //fake a long task for($i=0; $i < 20; $i++)
{
print(' Работаем....^^'); sleep(1);
}
//Проверка прерывания if(connection_aborted())
{
//Записать в журнал, что процесс был завершен openlog("TEST", LOG_PID | LOG_CONS, LOG_USER); syslog(LOG_INFO, " Задача завершена!"); closelog();
}
else
{
print("Спасибо за ожидание! 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. Операционная система. Часть Девятнадцатая. |