ТОП-10 популярных



Для работы с вещественными числами в MySQL предусмотрено три типа данных - это типы FLOAT, DOUBLE, DECIMAL. Числовой тип FLOAT...

НОУТБУК с блестящим экраном
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...

БОЛЬШЕ БОЛЬШИХ LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...

Больше больших LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...

Магнито-оптический дисковод DynaMO
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...

Иди и пиши. TravelMate C100
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...

ПОД ЛИТЕРОЙ «N»
Aтаку LCD-мониторов не остановить, а масштабы этого наступления даже немного пугают. Судите сами — многие пользователи только начинают приглядываться к новому для...


Для длинных строк, т.е. строк длиннее 255 символов, в MySQL предусмотрены типы BLOB (Binary Large Object, большой двоичный объект) и...

Размер объему не помеха.
С тех пор как компания Fujitsu отказалась от производства жестких дисков для настольных компьютеров, многие пользователи начали забывать о том,...


Какую только информацию мы не помещаем на компакт-диски: резервные копии важных данных, музыку, фильмы... Многие полагают, что главное - «купить...

PHP. Операционная система. Часть Восемнадцатая.


28-12-2009

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");
}
?>

Понравился материал? Поделитесь с друзьями!



<< Предыдущая статьяСледующая статья >>
PHP. Операционная система. Часть Семнадцатая. PHP. Операционная система. Часть Девятнадцатая.