Как стать автором
Обновить

Комментарии 22

нет, не тот :)
Сразу что бросается в глаза: нет возможности мылить через smtp сервер (команда mail сейчас уже почти ни где не используется ибо «спам» достал всех).
а настроить sendmail через php.ini? :)
а добраться до php.ini на VDS?
проще поставить флаг: sendmail=true — юзаем сендмейл, sendmail=false — юзаем стандартный mail.
НЛО прилетело и опубликовало эту надпись здесь
вот мне в .htaccess только этой гадости не хватало…
при его объёме, рисовать туда еще и пхп настройки, да к тому же ради одного единственного скрипта… не жирно ли будет?
лом дописать, так и скажите, и не надо выкручиваться настройками через другие средства, кроме самого скрипта
НЛО прилетело и опубликовало эту надпись здесь
PHP можно заставить писать ошибки в отдельный файл, который не будеть гигабайтным :)
НЛО прилетело и опубликовало эту надпись здесь
Стараюсь не держать ошибок вообще.
ИМХО если на странице ошибка — страница не работает.
А если что-то не работает — это сразу видно
Очень идеалистичный вариант. Есть масса ошибок, которые визуально не просматриваются.

Например, notice-ы об неопределенных переменных — есть случаи, когда это не страшно, есть случаи, когда это может повредить структуру базы и никак визуально не проявиться. Регулярный анализ лога ошибок — единственный способ бороться с такими ошибками в языке без обязательной инициализации переменных.
на это есть локальные вебсервера, команда ab и телепорт.
Сделали что-то. Запросили бота зайти на все страницы сайта.
И узнали где у вас битые ссылки, где страницы не отображаются, где ерроры и где тормоза спрятались.
Т. е. логов на продакшне у вас нет или вы их не смотрите, ибо smoke-тестирование выявило все ошибки?
логи конечно есть, иногда(редко) смотрим их.
просто я знаю что ошибок нету.
бывает что код просто работает не правильно, но ошибок при этом нету.

несколько лет назад был создан scanlog — почти что access лог апача, только удалено.
(ПС: сейчас сайту плохо, словили в день месячную нагрузку и не смогли пережевать(считали роботов людьми(и банили за агрессивность) ))

Рассказывает мне кто когда куда зашол и сколько времени это потребовало.
Фигня в общем, для души.
Вот только (покуда для своих) он еще умеет заходить обратно на страницу, которая его вызвала, кушать, анализировать и строить зависимости между страницами.
Работает просто — заходим на главную и начинаем рекурсивно кушать линки… кушаем… кушаем…
Смотрим какие ссылки куда ведут с какими анкорами, и фиксируем редиректы и ошибки доступа, если они есть…
Потом ждем ответа кода системы с сайта… а по сайту ходят люди да роботы, а мы все смотрим на внутренние переходы и достраиваем карту связей сайта…

Сайт в 200к страниц обходиться где-то недели за две.
На выходе — вся информация по сайту.
Где 404, где битая ссылка, где редирект не к месту и какие страницы «далековато» вложены.
А ерроры… еррор это статус не 200 в ответе, либо отсутствие отклика кода самого сканлога(последний код на странице)
Далее — остается просто зайти на указанную страницу
А как дела с разбором бэктрейсов обстоят? И при этом ошибки в лог хоста валятся? Например:

[Thu Oct 16 23:26:53 2008] [error] [client 127.0.0.1] PHP Zend_Controller_Dispatcher_Exception:  Invalid controller specified (foo) in /usr/share/php/Zend/Controller/Dispatcher/Standard.php on line 249
[Thu Oct 16 23:26:53 2008] [error] [client 127.0.0.1] PHP Stack trace:
[Thu Oct 16 23:26:53 2008] [error] [client 127.0.0.1] PHP   1. {main}() /var/www/work/html/index.php:0
[Thu Oct 16 23:26:53 2008] [error] [client 127.0.0.1] PHP   2. Zend_Controller_Front->dispatch($request = *uninitialized*, $response = *uninitialized*) /var/www/work/html/index.php:134
[Thu Oct 16 23:26:53 2008] [error] [client 127.0.0.1] PHP   3. Zend_Controller_Dispatcher_Standard->dispatch($request = class Zend_Controller_Request_Http {...}) /usr/share/php/Zend/Controller/Front.php:946
бэктрейс просто не пройдет регэксп
grep -i php error_log | uniq -ui | mail -s «ACHTUNG!!! WARNING!!! ATTENTION!!!» admin@host.com

в grep можно ставить regexp по типу ошибок php (error|warning|notice), чтобы слать только то, что нужно.
такой сценарий можно реализовать?
* ошибка в includes.php
* файл проинклюжен в file1.php и file2.php
* в итоге получаем две строчки, в которых повторяется только часть строки (не «PHP», а сообщение об ошибке)
* нужно сгруппировать по этой части (было 4000 хитов с одинаковой ошибкой, но разными request_uri)
* и указать, сколько повторений было по каждой ошибке и как давно она произошла (еще один кусок строки)

я не говорю, что нельзя, мне интересно :)
Нет универсальных решений, но grep'ать тексты при помощи php, чего-то там искать — уж извините. Perl — да, средства binutils — да, а php — нет.

Все можно написать, в том числе на bash в одну строчку, вопрос в другом — кому это нужно?

Есть xdebug, в нем есть кое-какие средства, есть средства самого php, логи можно вести в разных форматах, логи можно писать по-разному из разных мест (php script/php core/web-server), хоть стрейсы делайте и складывайте в папку.

Такие вещи сродни попытке написать ОС на php :)
Спасибо за -3 на коменте с дельным советом… Вы же тут у нас все Знающие… Спасибо!
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации