Подсчет просмотров страниц на интенсивном трафике кэшировал сайты

Наш сайт является довольно интенсивным трафиком, и мы используем и nginx и w3 общий кэш для обработки загрузки. Мы ранее использовали wp-постпредставления для подсчета просмотров страницы, но это, кажется, блокирует postmeta таблицу теперь и часто не считает представления вообще. Это ненадежно в лучшем случае

Кто-либо может предложить способ для нас считать просмотры страницы и поместить их в DB или какие-либо определенные осуществимые решения?

Моим начальным мыслям состояли в том, чтобы сделать количество представления с помощью JavaScript для обновления отдельной базы данных, затем задание крона в конце каждого дня для слияния результатов, но я не уверен, где запустить.

Заранее спасибо

2
08.07.2011, 10:57
3 ответа

Это действительно зависит, что необходимо просмотреть счета - если это только для наблюдения транспортной статистики, затем используйте Google Analytics или любое количество JavaScript основанные на средстве отслеживания инструменты аналитики.

Если Вам нужна интеграция количеств просмотра страницы и способности сделать вещи как сообщение порядка представлениями, то Вы можете также

  • проведите некоторое время, оптимизируя Вашу базу данных - некоторые опции и вещи рассмотреть
    • больше памяти для MySQL
    • измените посттаблицу метаданных, чтобы быть InnoDB
    • получите отдельный сервер базы данных
    • удостоверьтесь, что Вы настроились, Ваши настройки MySQL (используйте mysqltuner в качестве начальной точки),

ИЛИ

  • Используйте что-то как Piwik и проведите время, интегрируя его (он имеет достойный API) с WordPress.
1
19.02.2020, 22:29
  • 1
    Да, поскольку Вы говорите, что мы хотели бы использовать его различными способами с популярными виджетами сообщения и т.д. Мы также уже работаем на отдельном выделенном сервере БД, но мы избегаем innoDB, когда я читал о большом количестве проблем несовместимости с Wordpress. Я не эксперт DB, очевидно. Будет смотреть на Piwik хотя, Спасибо! –  James Bruce 08.07.2011, 19:54

Просто используйте статистику Google Analytics или wp.com.

Это не стоит напрасно тратить время на чем-то, что это уже решено.

0
19.02.2020, 22:29
  • 1
    , Но что, если я хочу заказать сообщения представлениями? –  Bainternet 08.07.2011, 13:09
  • 2
    Оба сервиса позволяют Вам делать это, особенно статистика wp.com. –  scribu 08.07.2011, 18:40
  • 3
    я не знал, что wordpress.com будет работать с кэширующимися системами, но прекрасной идеей, я, конечно, проверю это! Я не уверен, как я использовал бы аналитику Google для сортировки сообщений, хотя - я предполагаю, что Вы означаете использовать API и писать что-то пользовательское? –  James Bruce 08.07.2011, 19:49
  • 4
    На самом деле я не уверен, как wordpress.stats позволил бы нам выполнять wp-запросы, отсортированные по представлениям сообщения, и я действительно хочу избежать дополнительного плагина наверху для функций, в которых мы не нуждаемся - симпатичные графики и т.д. –  James Bruce 08.07.2011, 20:00
  • 5
    Вы могли сделать запрос точно так же, как сам плагин делает это (Раздел Top Posts & Pages). Что касается чрезмерного увеличения размера кода, Вы свободны демонтировать плагин и оставить только, в чем Вы нуждаетесь. –  scribu 08.07.2011, 23:12

Вот то, как Вы делаете это, предполагая, что у Вас есть активное расширение кэширования памяти:

(Я собираюсь использовать APC в качестве примера здесь, потому что он будет связан PHP 6),

// set this to the current post id
$post_id = get_the_ID();

// this will attempt to get the post view count from cache (the memory)
$page_views = apc_fetch("post_{$post_id}_views");

// if it exists, increase the counter (again, only in memory)
if($page_views !== false){
  $page_views = apc_inc("post_{$post_id}_views");

  // write the data to the database every ...let's say 100 views
  if(($page_views % 10) == 100)
    update_your_database_here();
}

// doesn't exist; most likely this is the first view, so create the cache entry
else{
  apc_store("post_{$post_id}_views", 1);
  $page_views = 1;
}

// show it
printf('This post has %d views', $page_views);

Можно принять решение использовать функции WP - wp_cache_incr () или wp_cache_decr () + W3TC с выбранным APC. Но лично я избегал бы использования любых плагинов кэша и создал бы мой собственный объектный обработчик кэшей, который я могу заглядывать каталогу wp-содержания.

Можно также использовать xcache для этого также, он не имеет значения - идея состоит в том, что необходимо сохранить количество в памяти до определенного момента, для предотвращения любых записей на диск. Так как Ваш сайт имеет интенсивный трафик, я предполагаю, что Вы владеете выделенным сервером, на котором можно установить собственные расширения PHP и т.д. Совместно использованный hosters не позволит Вам данным кэша в памяти по очевидным причинам...

2
19.02.2020, 22:29
  • 1
    Интересный подход, мне нравится он. Я не на 100% уверен в части, где Вы устанавливаете количество на 1, если это не находится в памяти, хотя... не был должен Вы проверять DB, так как память, возможно, потеряла значение количества, но уже могли быть тысячи хитов на старом сообщении, сохраненном в DB, и я полагаю, что этот код затем сбросил бы то значение количества на том сообщении, если бы это когда-нибудь становилось пропавшими без вести от памяти! Если я не следую правильно... Мне нравится понятие хотя –  JasonDavis 25.12.2014, 23:29

Теги

Похожие вопросы