Нужен совет-рецепт по учёту количества эфиров

zuher

Новичок
Нужен правильный совет от старца ПХП ))) Как правильно реализовать, дабы не напрягать сервер и не подвешивать сайт. И так приступим...

Есть файл XML по которому отслеживается есть ли диджей в эфире - если нет, тогда ошибка и показываем аватарку "автодиджа" - если в эфире тогда показываем аватарку "живого" диджея
То есть наличие конкретного типуса в эфире имеем.

Что хочу?

Автоматический подсчёт количества проведённых эфиров диджеями. Ну и соответственно с заносом этого счастья в БД.
Реализовать саму запись при заходе на сайт любого пользователя получается, а вот как ограничить количество записей в БД не хватает опыта. То есть мой сценарий выглядит так, почитайте, может что то умнее предложите.
1. Считываем XML
2. Делаем запись в БД с меткой времени и именем диджея
3. Делаем проверку на наличие такой же записи в течении 5 часов // if есть запись - удаляем нахрен запись из п.2 и выходим из скрипта дальше //else увеличиваем счетчик эфиров на единицу и переписываем запись в другое поле для дальнейших сверок

Вот дальше логика запуталась ))))

Проблема в логике и переживаю о производительности сервера, ведь если эти проверки будут проходить с каждым просмотром каждой страницы каждым пользователем Mysql в конце концов вскипит.

Сам уже запутался чего тут понаписал ))) Короче, кто понял, помогите советом пожалуйста
 

tz-lom

Продвинутый новичок
трогай XML кроном,а не каждым пользователем,а пользователю отдавай результат анализа кто в эфире из базы
алсо лично мне нихрена не понятно какие базы ведутся и в чём собсна проблемы
 

zuher

Новичок
tz-lom
пользователю я знаю как отдать ))) а вот как правильно забрать в базу кто в эфире? чтобы учесть один раз в сутки
 

Ragazzo

TDD interested
zuher
введи поле last_efir или как то так...и все...в чем проблема?лучше ман по Mysql почитай или по постгре, не знаю что там у тебя
 

Вурдалак

Продвинутый новичок
Откуда берётся XML-файл? Вот та программа, что его генерирует, и должна заносить в базу информацию об эфире и диджее.
 

zuher

Новичок
zuher
введи поле last_efir или как то так...и все...в чем проблема?лучше ман по Mysql почитай или по постгре, не знаю что там у тебя
Дружище, видимо невнимательно прочитал ))) поле ввести не проблема, как оставить запись в нем раз в сутки - вот проблема.
Можно было бы делать проверку в то время когда эфирит определенный диджей, но чёткого расписания нету, поэтому надо вылавливать когда появляется ))
 

zerkms

TDD infected
Команда форума
"поле ввести не проблема, как оставить запись в нем раз в сутки - вот проблема."

Добавить рядом поле дата, покрытое уникальным индексом.
 

zuher

Новичок
zerkms
Если не сложно, напиши пожалуйста логику обычным текстом, а уж в php попробую сам перевести, если не получится уже тогда буду просить помощи тут ))) И вопрос...
А проверку будем делать все таки каждым пользователем или лучше привязать к крону, чтобы каждые 10 минут делал проверку?
Что будет работать эффективнее. Не хотелось бы трогать крон, может можно что то придумать, чтобы обойти лишние запросы к БД ???
 

SiZE

Новичок
zerkms
Если не сложно, напиши пожалуйста логику обычным текстом, а уж в php попробую сам перевести, если не получится уже тогда буду просить помощи тут ))) И вопрос...
А проверку будем делать все таки каждым пользователем или лучше привязать к крону, чтобы каждые 10 минут делал проверку?
Что будет работать эффективнее. Не хотелось бы трогать крон, может можно что то придумать, чтобы обойти лишние запросы к БД ???
В таблице у тебя два поля dj_id и dj_date. На эти два поля делаешь один уникальный индекс. Т.е. при попытке повторно заинсертить за сутки еще раз этого диджея у тебя вылезет ошибка т.к. id за указанную date будут уже существовать в таблице. Ну и теоретически можно потом через GROUP BY dj_id сделать COUNT (dj_id) и узнать количество эфиров.

Если у тебя не будет ни одного пользователя за сутки, то получается у диджея и эфиров не будет, так что надо использовать крон.

А вообще это детская нагрузка будет. Когда будет пару миллионов записей, приходите — поговорим. :)
 

zuher

Новичок
SiZE
Спасибище огромное - буду пробовать разобраться )))
 
Сверху