Подсчет просмотров страниц на сайтах с высокой пропускной способностью

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

Может ли кто-нибудь предложить нам способ подсчета просмотров страниц и размещения их в БД или каких-либо конкретных рабочих решений?

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

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

Solutions Collecting From Web of "Подсчет просмотров страниц на сайтах с высокой пропускной способностью"

На самом деле это зависит от того, что вам нужно, чтобы подсчитывать счета – если это просто для просмотра статистики трафика, то используйте Google Analytics или любое количество инструментов для анализа на основе javascript.

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

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

ИЛИ

  • Используйте что-то вроде Piwik и потратьте время на интеграцию (у него есть достойный API) с WordPress.

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

(Я собираюсь использовать 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-content.

Вы также можете использовать xcache для этого тоже, это не имеет значения. Идея состоит в том, что вам нужно хранить подсчет в памяти до определенной точки, чтобы избежать записи на диск. Поскольку ваш сайт имеет высокий трафик, я предполагаю, что у вас есть выделенный сервер, на котором вы можете установить свои собственные расширения PHP и т. Д. Общие хосты не позволят вам кэшировать данные в памяти по очевидным причинам …

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

Не стоит тратить время на то, что уже решено.

спасибо за ваш ответ onetrickpony. Если я могу спросить, не могли бы вы расширить этот ответ, чтобы он работал с помощью запроса JavaScript? Потому что я использую обратный прокси-сервер, который не обрабатывает PHP-код на каждом просмотре страницы. Тем не менее, вызов Javascript будет.