Как я могу показать, какие дни и часы наиболее активны на веб-сайте с использованием PHP и MySQL?
Я хочу сделать гистограмму на своем веб-сайте, которая показывает, какие дни недели и время суток имеют наибольшую активность / входы в систему.
Так что мне интересно, кто-нибудь может дать мне несколько советов, как они это сделают? Как мне организовать таблицы базы данных, какие данные собирать и как я могу представить данные, записанные в виде гистограммы, используя PHP.
3 ответа
Может быть проще сделать визуализацию, используя журналы вашего сервера. Обработка ( http://www.processing.org/) хороша для подобных вещей, или попробуйте http://processingjs.org/ для версии, отличной от Java.
Однако, чтобы ответить на ваш вопрос, как уже упоминалось, сохраняйте время данных для каждого посещения (и, возможно, IP-адрес, если вы посещаете уникальные посещения), а затем напишите сценарий, который будет извлекать записи и делать итоги за каждый час. Вы можете использовать цветные div, с высотой, установленной на количество (или дробь) хитов. На самом деле это в основном счетчик попаданий, не так ли?
Да, мой совет - проверить обработку, но ее легко подобрать и она дает приятные на вид результаты.
Если вы должны сделать это самостоятельно, а не использовать уже существующий пакет. Начните с малого. Просто создайте одну таблицу, которая регистрирует каждый запрос, кто его сделал, время, реферер, любую информацию, которую вы хотите.
Как только вы зарегистрируете данные, если вы все еще не хотите использовать что-то вроде Google Charts, вы можете попробовать создать свои собственные простые PHP-диаграммы с использованием CSS и HTML.
Гистограммы могут быть довольно простыми, но для их получения требуется математика. Самый простой способ - перевернуть их на бок. Обычно вы видите их как здания, но в этом случае вы хотите видеть их как червеобразные трубы. Длина трубки может представлять количество посещений, просмотров страниц, посещений и т. Д.
Я бы определил фиксированную ширину для всей диаграммы и изменил бы ширину столбцов, чтобы они представляли процент от максимального значения. Таким образом, если максимальное значение равно 1000, а этот столбец равен 500, вы бы сделали его на 50% ширины вашего графика.
Я надеюсь, что это указывает вам в правильном направлении. Делать что-то подобное может быть полезно для изучения новых концепций.
Вероятно, лучший способ сделать это - сохранить отметку даты и времени для каждого посещения или входа в систему. Затем вы можете использовать умные SQL-запросы для группировки информации по своему усмотрению (дни недели, время суток или что-то еще.)
Таким образом, таблице базы данных, скорее всего, понадобится только первичный ключ и временная метка посещения, хотя вы также можете точно хранить информацию о пользователе или действии.
Для презентации попробуйте либо Google Charts (http://code.google.com/apis/chart/), либо библиотеку диаграмм на основе JavaScript (есть несколько, у меня был хороший опыт работы с Highcharts http://www.highcharts.com/)
PS: Поскольку вы пометили этот пост как MySQL, я предполагаю, что это ваша база данных. Вот инструкция по созданию таблицы, которую вы можете использовать.
CREATE TABLE `visits` (
`id` int(11) unsigned NOT NULL auto_increment,
`created` datetime NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;