PHP и хранение статистики - PullRequest
       2

PHP и хранение статистики

1 голос
/ 15 января 2011

Используя PHP5 и последнюю версию MySQL, я хочу иметь возможность отслеживать показы и клики для списков предприятий. Мой вопрос: если бы я сделал это сам, что было бы лучшим способом для его хранения, чтобы я мог запускать отчеты? Раньше у меня была таблица с идентификатором списка, IP-адресом пользователя, кликом или показом, а также датой отслеживания. Однако сама база данных приближается к 2 ГБ данных, и она очень медленная, частью проблемы является ее довольно простой сценарий, который включает в себя показы и клики от всех, включая поисковые системы, и в основном от любого или чего-либо, кто обращается к странице листинга.

Существует ли API или файл, в котором есть список обновлений до даты, который может определить, является ли просматриваемый человек действительно человеком, а не пауком, поэтому я не заполняю базу данных ненужной статистикой? Просто ища предложения, есть ли у меня необработанная база данных, которая получает только хиты, а затем работу cron по ночам для каждого листинга для каждого ip и сохраняет совокупную статистику в другой таблице?

Кроме того, что это за база данных? Innodb? MyISAM

Ответы [ 3 ]

1 голос
/ 15 января 2011

Я бы подумал, что вы никогда не создадите чего-то лучшего, чем то, что уже есть.Я бы использовал аналитику Google.Если вы хотите использовать его на стороне администратора сайта (возможно, для запуска клиента), вы всегда можете использовать API googles и извлекать данные по мере необходимости.вот где я посмотрю .. http://code.google.com/intl/en-US/apis/analytics/

hth Приветствия -Джереми

0 голосов
/ 15 января 2011

На всякий случай, если вам нужно отличить реальных пользователей от ботов, вот простое решение: используйте javascript для отправки отчетов на сервер.

Допустим, у вас есть ссылка, и вы хотите отслеживать, когда она нажата. Затем добавьте обработчик onclick, который отправит достойный отчет на сервер. Вот пример:

<a href="/somepage" onclick="track('click', this.href); return true;">Some page</a>

Функция трека будет выглядеть так:

function track(action, data) {
    var Img = new Image();
    Img.src = '/track.php?action=' + action + '&data=' + data;
}

Таким образом, в этом случае, когда пользователь щелкает ссылку, информация об этом щелчке будет отправлена ​​на сервер с помощью этого фрагмента кода JavaScript. Боты не могут запускать JavaScript, поэтому они не будут засчитаны. Однако есть один недостаток: если пользователь отключил JavaScript в своем браузере, ваш скрипт отслеживания не будет учитывать такого пользователя. Очевидно, вам нужно реализовать скрипт track.php для хранения данных.

Что касается вашего вопроса по MySQL, я бы выбрал MyIsam, так как он кажется более терпимым ко многим вставкам. Кроме того, вы можете посмотреть на оператор INSERT DELAYED, и ваша идея о ночных заданиях cron кажется мне разумной. Вы также можете разделить таблицу статистики по дням, неделям или месяцам.

0 голосов
/ 15 января 2011

99,999% времени, вы будете просто писать в базу данных.

Так что для такого рода работы ежедневные многораздельные таблицы MySQL сделают эту работу.

Каждый день пишите на один и тот же раздел и запускайте ANALYZE PARTITION на своем вчерашнем разделе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...