2010-12-27 4 views
2

Я поддерживаю приложение, в котором пользователи могут хранить изображения, а затем делить их. Система оснащена MongoDB на задней панели. Большинство страниц описания изображений кэшируются как плоские HTML-файлы, но я могу запустить некоторый код непосредственно перед загрузкой файла.Эффективный способ хранения подсчетов объектов для объектов?

Я решил реализовать количество просмотров для системы. Мне интересно, какое место лучше для этого. Он должен быть похож на Memcached, но он должен сохранять число просмотров каждый час или около того, поэтому, даже если наш сервер должен быть перезапущен, мы не потеряем количество просмотров.

Какое лучшее решение для этого (желательно с расширением PHP как клиент)?

ответ

0

Похоже, что количество просмотров для каждого кэшированного плоского файла HTML? Почему бы не сохранить их в некотором коде в начале файла. Его можно снять, когда файл просматривается ...

+0

Считается, что число просмотров в HTML-файлах PHP является переменной JS. Затем Javascript помещает его в нужное место. И то, что вы предлагаете, далеки от эффективности. –

0

Я как-то решил эту проблему, сохранив кол-во просмотров в memcached, а затем обновляя базу данных в произвольные интервалы на основе количества просмотров. Вероятность сохранения в базе данных была 1/sqrt (количество просмотров). У этого были хорошие свойства. Если количество просмотров было небольшим, например 4, то вероятность записи в базу данных была 1/2. Если количество просмотров на объекте было высоким, скажем, 1 000 000, тогда вероятность будет равна 1/1000. Казалось, это хорошо работает.

0

Сделайте что-то простое ... если вам не нужен отчет/статистика в реальном времени, вы должны просто анализировать ежедневный журнал apache и хранить количество совпадений в базе данных или даже в формате плоского файла.

Преимущества?

  1. это не вредит существующего приложения
  2. не требует дополнительного кэша памяти или так
  3. просто необходимо разобрать ежедневный журнал апача (раз в день)
  4. извлекаемые

Конечно, это не останавливает вас от настройки cronjob для периодического чтения/обновления базы данных (для более быстрого просмотра)

Смежные вопросы