Каунтер .. не детский =)

Lifeline

Новичок
Каунтер .. не детский =)

Просмотрел выборочно 10 уже готовых скриптов пхп+мускл счетчиков. Ну что сказать - на 10 000 хитов тестовых мускл валиться, точнее портит таблицы а сам счетсчик уже начинает тормозить. Все из-за того что при каждом хите идет ображение к базе, а она видимо это не любит. Как же действуют известные счетчики типа спайлоговского например ? они же миллионы хитов логят. Я понимаю что там соотв. сервера и так далее, но сам принцип какой ?

Может есть пример счетчика что б не грузил сервер и был более менее качественным ? анализаторы логов апача не предлагать =)
 

dak

Guest
Как же действуют известные счетчики типа спайлоговского например ?
Блин, нашел кого в качестве примера приводить...
Вот Top100 на С/C++ написан, на нем они и действует, :) разницу между С и PHP не надо объяснять?
 

.des.

Поставил пиво кому надо ;-)
dak а Спайлог на php - по крайней мере точно был и справлялся с приличной нагрузкой. Так что это не пример.
 

Lifeline

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

Barlone

Guest
MySQL для таких задач мало подходит, надо на другие БД смотреть. (MySQL оптимизирован для задач, где много несложных select'ов и мало обновлений и добавлений записей - ленты новостей, форумы и т.п.)
 

tony2001

TeaM PHPClub
Barlone:
MySQL оптимизирован под atomic transactions, в их число входят и мелкие инсерты.
Вообще думать надо при планировании базы - незачем забивать статистику в таблицу с индексами, это будет тормозить.
Сначала забивайте в таблицу без индексов, потом ее обрабатывайте и результат уже переносите в таблицу, откуда будет все выбираться.
Кстати, СпайЛог на MySQL - у них 54 сервака, если я не ошибаюсь (happy.spylog.ru - тут это было, кажется).
Только не на РНР =) На РНР у них интерфейс. А система - на C.
 

Barlone

Guest
Да, пожалуй я погорячился.
Ладно, добавлю еще, что в MySQL в таком случае желательно использовать INSERT DELAYED
 

AnToXa

prodigy-одаренный ребенок
вопрос остается!
Яро
бард-скальд

Apr 2002 (сообщений: 109)
Город: Russia

--------------------------------------------------------------------------------

на 10 000 хитов тестовых мускл валиться

--------------------------------------------------------------------------------


в секунду???
 

Lifeline

Новичок
Антоха, буквально на 10 в секунду (те например надо сделать 2 селекта и 2 инсерта на каждй хит), при этом вопрос больше не в том даже, что с ним делать, а в том что мускл начинает поедать заметное количество системного времени.
 

AnToXa

prodigy-одаренный ребенок
Lifeline
хм...
1. Выкинь свой 486 на помойку
2. настрой mysql правильно (http://www.mysql.com/doc)
 

Nime

Guest
Lifelien, а какие ты смотрел? У меня под 150,000 в день выдерживает... не скажу, что система не нагружена (особенно когда статистика обсчитывается), но жить можно...
 

Barlone

Guest
Автор оригинала: Lifeline
Антоха, буквально на 10 в секунду (те например надо сделать 2 селекта и 2 инсерта на каждй хит), при этом вопрос больше не в том даже, что с ним делать, а в том что мускл начинает поедать заметное количество системного времени.
А что за два селекта и два инсерта ?
 

Lifeline

Новичок
таблица в стиле

дата\броузер\кол-во

тоже самое по рефам языкам и прочему

при хите база или апдэйтиться или если такого в этот день еще не было то создается
 

Barlone

Guest
Не, надо не так делать.
Создается таблица (без индексов, без varchar - все поля фиксированой длины), в которой на каждый хит записывается время, IP, что там тебе еще нужно. Все поля минимальной длины - то есть время - int unix timestamp, IP тоже к int преобразовано, и т.д. (INSERT DELAYED делается).
По крону с нужной периодичностью вызывается скрипт, которых делает LOCK TABLE / SELECT ... / TRUNCATE TABLE / UNLOCK TABLE, обрабатывает и распихивает по твоим таблицам.
 

Lifeline

Новичок
А что получается тот скрипт который пишет в эту таблицу если он нарывается в этот момент на залоченую таблицу ?
 

Lifeline

Новичок
Понял, tnx
буду пробовать

Nime, можешь кинуть формат базы который ты юзаешь и он у меня держит 150 000 (хотя коненчо с другой стороны для счетчика тоже не особо много), но хоть что-то.
 
Сверху