- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
VK приобрела 70% в структуре компании-разработчика red_mad_robot
Которая участвовала в создании RuStore
Оксана Мамчуева
Маркетинг для шоколадной фабрики. На 34% выше средний чек
Через устранение узких мест
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Скажу честно, нет особого желания проверять самостоятельно, но все же основная причина этой темы - отсутствие времени.
Вообщем исходные данные:
2 типа логирования - ошибки(плюс время генерации страницы и прочее), которые я отлавливаю сам(я их назвал ПХП), и логирование мускульных запросов(таймстамп, время выполнения запроса, запрос). Для емких запросов(дофига инсертов) я сделал возможность самостоятельно указывать данные по запросу(в какие поля вставляем, скока записей добавлено)
Так вот, при каждом просмотре любой страницы сайта происходит логирование. Пока сделал на файлах(пишется в файл с названием date('Ymd', time()) .'.txt', типа 20121228.txt). Но возник логичный вопрос - а почему бы не писать в БД?
Как-то месяц назад была чуть-чуть похожая ситуация. И делал тесты. В файле был аналогичный код:
Файл был на локалке. Я его открываю в мозиле любимой и для теста раз 20-30 тыкаю F5:)
В итоге вижу следущую картину:
время1
время1
время2
время2
время1
время3
время3
время1
время2
время15
время100500
То есть, то что в БД называется транзакциями здесь отсутствует(я хз, может можно как-то эмитировать, но не знаю, хотя вряд ли, это ж файлы).
И собственно к нашим баранам.
ENGINE = MyISAM на инсерты очень быстр, и он вполне может справиться с поставленной задачей.
Ожидаемое число просмотров(не уникальный посещений, а именно записей в файл) страницы в сутки около 10000, но с перспективой роста.
Так, вот, кто за файлы, а кто за БД, и почему собственно?
updated: хранить логи планируется за последний месяц. Закончился декабрь, сейвим бэкап таблицы с названием "месяц-год", трункейтим таблицу.
1. Запись в файл очень быстрая, быстрее чем в базу.
2. пишем в log.date("Y-m-d") , очищаем моментом, нужный срез так же. Не надо потом таблицу на крон для очистки и оптимизации ставить . Опять же, в бакап базы не попадает мусор
3. в любой момент делаем LOAD DATA через базу и нужный лог в таблице для анализа.
4. банально экономим процессорное время на не нужные проверки целостности, на обработку локов таблицы и т.п.
5. в отличии от базы, формат лога может быть любой.
Stek, ну зачем, Вы, как ни фига не понимающий в Вебе, лезете здесь со своими советами, а тем более с файловым решением для этого есть monstr? :) :) :)
А по сути, для логирования самое то - в файл.
А если еще и в реальном времени это надо, то из консоли tail -f
Это проблемы монстра, когда в интернете кто то не прав :D
Черт, пункт 6 так сказать :) Действительно очень удобно, когда скрипты пишут в лог (каждый в свой лог) , а ты в реал тайм режиме наблюдаешь что происходит. В случае же с базой придется уже писать свой мелкий скрипт.
Консоль? Не, не слышал:)
Спасибо за советы, есть над чем подумать.
ЗЫ. Монстр теперь будет походу "Фемида веб-девелопмента":)
На мой взгляд, тут всё зависит от степени перспективы роста, и распределения нагрузки в течение суток. Под транзакциями вы очевидно подразумевали conqurency, то есть, возможность двум или более процессам писать в лог одновременно. И в этом, при больших нагрузках, при использовании файлов, может оказаться слабое звено. В отличие от базы данных, в файл два процесса не могут писать одновременно. Соответственно, они выстроятся в очередь, и будут друг друга задерживать, и на определённом этапе часть записей не будет производиться.
При использовании базы данных для логирования ошибок, следует учесть вот какой тонкий момент: недавно я столкнулся, в одном из наиболее распространённых скриптов форумов, велось логирование ошибок в базу данных. При большой загрузке сервера, начинают возникать ошибки, типа "Lost connection...". Скрипт пытался записать в лог об этой ошибке, что естественно вызывало ошибку, которую он вновь пытался записать в лог... В результате, за сутки error_log вырастал до много-сотен-мегабайтных размеров.
Попробуйте сделать элементарный скрипт на запись через fopen('..', 'a'); Там все быстродействие упирается только в скорость файловой системы, а это тысячи записей в секунду.
Stek, не говори хоп, пока не перепрыгнул...
Вы никогда не сталкивались с обрезанными записями в логах?
на данный момент у ТС не есть высоконагруженной системы. Поэтому ФС справится без труда.
В случае больших нагрузок, возможно понадобится какая-либо надстройка, например,в виде APC, и по крону dump хеша в файл
only file
пример:
повисла БД...
писать в файлы, а потом по крону скриптом писать ошибки в БД и чистить файлы.
либо в память и каждую минуту в базу. Это - в случае очень высоких нагрузок.
Ни разу. Зато с лог таблицами в базе по сотне гиг - сколько угодно. Особенно весело когда такая таблица в innodb на нагруженнном проекте, где ее фиг просто так дропнешь.
100к записей за 9.0914931297302 , т.е. 10к записей в секунду. Это на виндах, на бюджетном 7200 диске. В базу думаю будет порядка 500-600 в секунду.
Когда у ТС будет такой траф для логов, то уж не думаю, что для него будет актуален метод логирования.
Stek, Это вы проверяли в монопольном режиме
а теперь
test.php
start.php
Это я на коленке... если есть ашЫпки, можно смело в лицо.