1

Поделитесь, пожалуйста, опытом и советами как Вы производите отладку (debug) PHP сценариев. Может подскажете хорошие статьи на русском языке, а также видео. Про xDebug знаю, но скорее всего этот вариант не подойдет, так как нужно делать отладку на продакшене...

spoilt
  • 1

3 Answers3

4

так как нужно делать отладку на продакшене...

Если вы делаете отладку на продакшене, то это не продакшен. Виртуалбокс (или аналоги) позволяет решить практически любую проблему с разным окружением.

Если нет возможность вклиниться xDebug'ом, то варианта по большому счету два: типичный var_dump(); die; и осмысленное логирование (логирование каждого чиха с нужной категорией и последующее отключение не очень важных категорий, если все работает нормально; идеально - логировать все подряд, но записывать трейс в файл только при появлении лога с категорией error и выше).

Еще одна очень важная тема - это тесты (PHPUnit). Несмотря на всю простоту, грамотно орагнизованный проект позволит вам вытаскивать баги разве что не перед тем, как вы их написали, и не допустить на продакшен 90% потенциальных дыр.

etki
  • 36,151
3

Даже не знаю как назвать. Для кода который пишу, делаю пачку запросов к методам с проверкой возвращаемых данных. Если результат не соответствует допустимым значениям, пошагово после каждого действия, вывожу данные для нахождения места в котором ошибка.

terantul
  • 3,247
  • 1

    Даже не знаю как назвать

    unit tests

    – etki Feb 17 '14 at 20:21
  • Теперь буду знать:-) А то я как бэ самоучка. Пишу чисто для себя. – terantul Feb 17 '14 at 20:27
  • 2
    @terantul, посмотрите PHPUnit. Наверняка у вас тот же функционал (потому что он простой), но у юнита на удивление приятная организация и вывод. – etki Feb 17 '14 at 20:33
1

Используй фреймворки и вопросы такого плана отпадут. А так да, тестирование. например как я делаю: Делаю роль пользователя на сайте как "developer" и вывожу снизу профайлер если у пользователя такая роль. Получается, что кроме тебя никому не видны никакие дебаг данные, а ты спокойно можешь тестить на реальной нагрузке. Только после теста удаляй эту роль из админки, для безопасности.

VictorH
  • 652
  • 1
    Если над языком, уже разработанным как надстройка для веб-программирования, надо надстраивать ещё и фреймворк, то либо язык какой-то не такой, либо программист. Фрейворки не должны заменять программисту мозги, только облегчать работу. То есть, можно не писать каждый раз тесты с нуля, если можно, к примеру, воспользоваться готовой библиотекой, но надо знать и понимать, как эта библиотека работает. – Risto Feb 18 '14 at 06:18
  • Risto, а Jquery вы тоже не применяете и никаких плагинов на своем сайте? С вашах слов получается так:

    "Если над языком, уже разработанным как надстройка для работы с объектами, надо надстраивать ещё и фреймворк"

    И хотел бы у вас спросить, чем отличается фреймворк от вашего каркаса с кучей библиотек, на котором вы делаете те же сайты-визитки? Ничем. Только фреймворк написан более грамотными людьми. Спорить с вами не буду на эту тему, т.к. вы сами к этому придете.

    – VictorH Feb 18 '14 at 08:35
  • @Victor Halauko

    Только фреймворк написан более грамотными людьми.

    авторами статей, текстов, постов

    Спорить с вами не буду на эту тему

    уже начали

    @Risto имел в виду, что а) фреймворк не панацея от плохого кода и б) использовать его без знания того, как написать такой фреймворк, не имеет большого смысла

    – etki Feb 18 '14 at 08:38
  • Я не о плохом коде. Человек задал конкретный воопрос: Поделитесь, пожалуйста, опытом и советами как Вы производите отладку (debug) PHP сценариев. Я ему дал прямой ответ, что в фрейморке уже вшиты куча инструментов для отладки. Начиная от профайлеров, заканчивая тестами. – VictorH Feb 18 '14 at 08:42
  • Дело в том, что проект очень большой и завершен на 95% и переписывать его под фреймворк сейчас вообще не вариант.... В дальнейшем, возможно, да! – spoilt Feb 18 '14 at 13:11