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


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


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

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

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

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


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

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

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

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

Internet2, или cтарые песни о новом
Когда-то на заре Интернета, тогдаеще военно-научной сетиAPRAnet, были заложены основныепринципы функционирования«Сети сетей». В их числе — использованиепротокола, называемого сейчасIPv4. В...

PHP. Эффективность и отладка. Часть Шестая.


10-07-2015

28.5. Стратегии отладки
Бывают случаи, когда кодирование приводит к самым неожиданным результатам, а изучение кода не дает никаких результатов. В таком случае лучше всего произвести построчную отладку. Сценарии PHP генерируют HTML-код, который интерпретируется браузером, и HTML-код снабжается тегом комментария. Поэтому проще всего написать PHP-код, который бы сообщал диагностическую информацию в HTML-комментариях. Это позволит поместить диагностическую информацию в сценарии, не виляя на его работу.
Часто приходится создавать динамические запросы к базе данных на основании данных, вводимых пользователями. Неправильный символ или ошибочный пользовательский ввод может привести к ошибке. Иногда следует оставлять возможность для ввода самого запроса. Кроме того, можно выводить результаты работы функций, формирующих сообщения об ошибках (mysql_error). Тоже справедливо и для кода, не имеющего отношение к работе с базами данных. Распечатка даже таких простых диагностических сообщений, как "попали туда-то", может помочь. (В главе 9, "Операционная система", описывалось множество функций, имеющих отношение к процессу отладки, особое место среди которых занимает функция print_r.)
Можно долго искать ошибки в созданном приложении, включив отображение всех ошибок, сообщений и уведомлений. Сообщения и уведомления не могут остановить ваши сценарии, но они могут предупредить о потенциальных проблемах. Посмотрим, как PHP позволяет использовать переменную для ее инициализации. Если в имени переменной содержится ошибка, PHP создает новую переменную с пустым значением. PHP генерирует уведомление об использовании значения переменной до ее инициализации. Проще всего активизировать уведомления в конфигурационном файле php.ini , предполагая, что Web-сервер полностью предназначен для поддержания работ по разработке приложений. Промышленно используемый Web-сервер не должен отображать сообщения об ошибках. Но полное диагностирование ошибок можно включить с помощью функции error_reporting.
Есть еще один способ - фиксирование диагностических сообщений в специальном системном журнале. Функции error_log и syslog представляют собой два решения, встроенных в PHP. Конечно, несложно открыть текстовый файл и записывать в него диагностическую информацию. При использовании Web-сервера Apache для передачи отладочной информации процессу Apache и включения ее в регистрационный журнал можно воспользоваться функцией apache_note. О том, как создаются специальные ре­гистрационные журналы, можно узнать в документации по Web-серверу Apache.
Наконец, есть еще несколько инструментов, предназначенных для отладки сценариев PHP. Например, Zend Studio имеет удаленный отладчик, позволяющий прослеживать работу каждой строки сценария.
28.6. Имитация HTTP-соединений
При написании сценариев PHP необходимо понимать каждую деталь HTTP-протокола. Я не хочу углубляться в эту тему и лишь отмечу, что умение сымитировать HTTP-соединение с помощью утилиты telnet может пригодиться в дальнейшем. Вы, конечно, знаете, что Web-сервер по умолчанию использует порт 80. HTTP-протокол - это текстовый протокол, поэтому можно подключиться с помощью утилиты telnet непосредственно к Web-серверу и выполнить простой запрос. HTTP-протокол имеет несколько общеизвестных команд, но чаще всего используются команды GET и POST. Команда HEAD возвращает только заголовок запроса, и браузеры с ее помощью могут определить, требуется ли в действительности целый документ.
Имитация HTTP-соединений может очень помочь при отправке сценарием адаптируемых заголовков. На рис. 28.3 показан запрос, сделанный к Web-серверу Apache. Жирным шрифтом выделена вводимая команда, все остальное - это информация, которую возвратил сервер.
Эффективность и отладка

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



<< Предыдущая статьяСледующая статья >>
PHP. Эффективность и отладка. Часть Пятая. PHP. Эффективность и отладка. Часть Седьмая.