Вопрос по поводу счетчиков посещений
Здравствуйте. Народ. Помогите пожалуйста. Вообщем проблема такая... Я не могу разобраться как организовать до тупого упрощенный аналог спайлог. Т.е. масенькая картинка на чужом сайте и отсылка на мой сайт данных с чужого сайта о месячном кол-ве посещений. Даже не знаю с чего начать. Поиск юзал, ничего по существу не надыбал. Или гугл против меня или у бубна триал срок истек. :confused:
Цитата: De_Montale
Здравствуйте. Народ. Помогите пожалуйста. Вообщем проблема такая... Я не могу разобраться как организовать до тупого упрощенный аналог спайлог. Т.е. масенькая картинка на чужом сайте и отсылка на мой сайт данных с чужого сайта о месячном кол-ве посещений. Даже не знаю с чего начать. Поиск юзал, ничего по существу не надыбал. Или гугл против меня или у бубна триал срок истек. :confused:
С помощью логов апача и их парсинга или с занесением в БД запросов (первый вариант быстрее)
Спасибо, Fenyx. Только это уже, как я понял, будет извратством с участием банды шаманов... Тогда, позвольте, не оффтопный вопрос. Просто по тематике сайта нужна будет иметь механизм мониторинга рейтинга списка сайтов. "site_1 = рейтинг такой та, site_2 = вот такой та,...,n+1". Вот скрипт для подсчета Google Page Runk у меня есть...С тИЦ проблемы. Не могу найти функцию - те что в сети доступны, не пашут, т.к. yandex протестует яро и избегает подобных вещей. Имеются некие рабочие скрипты, но они или платны или делится никто не хочет. Поэтому думаю пихать в бд сцылы на счетчики юзеров. А при выборке из БД отображать соответствующие счетчики для соответствующего сайта. Только вот не знаю, является ли этот подход с точки зрения программного решения корректным? Не изобретаю ли я велосипед? да и вообще, осуществимо ли это...
В принципе, всё реализуемо. Только хватит серверной мощности для того, что ты хочешь? :)
Fenyx, с парсингом логов вариант не прокатит, т.к. человек хочет делать статистику для чужих сайтов. Хотя... Передумал :) Можно. Парсить свои логи будет.
De_Montale, для начала, по-моему, стоит посмотреть JS формирование счётчика того же самого LiveInternet'a. Оттуда и нужно копать.
Цитата: De_Montale
...картинка на чужом сайте и отсылка на мой сайт данных с чужого сайта о месячном кол-ве посещений.
Сайты добровольно ставят эти картинки? (а то мало ли ;))
Пиши скрипт, который получает через GET идентификатор сайта, заносит его в БД со всеми необходимыми параметрами (дата, IP, UA), выдаёт правильный Content-Type и считывает из файла необходимую картинку.
Потом делаешь выборку из БД по дате и ID'у и получаешь необходимую статистику.
Можно постараться и статистику вывести прямо на картинке, отданной клиенту, но для этого нужно уметь генерировать PNG/GIF.
Progr\., JS-формирование - это излишне (человеку нижен просто рейтинг), оно используется для определения поддержки JS и некоторых параметров.
во всём этом есть одна беда: на MySQL эту всю ерунду не сделаешь, а сурьёзные движки денег стоят немалых. Овчина выделки не стоит, учитывая уже имеющееся изобилие сервисов статистики. Ну, разве что для интересу собственного попробовать...
Цитата: mfender
на MySQL эту всю ерунду не сделаешь
Почему?
Из-за её нельбви к большим объёмам :) Я бы порекомендовал всё же postgreSQL выучить и заюзать... Там и простор для деятельности (поддерживает объектную модель, наследование и ещё много всего) и на больших таблицах и более сложных запросах пошустрее будет... MySQL используется в основном из-за его более мощного комьюнити и более высоких результатов на простых запросах и небольших таблицах...
ну, рас уж написал, надо б выложить
на сайте пользователя ставишь вот такую картинку
[HTML]
<img src="http://youdomain.ru/statistic.php" />[/HTML]
youdomain.ru соответственно домен, на котором лежит твой сайт,
а statistic.php страница, которая обрабатывает данные
вот код страницы statistic.php:
Код:
<?php
//print_r($_SERVER);
if (isset($_SERVER['HTTP_REFERER']) &&
(!strstr($_SERVER['HTTP_REFERER'], $_SERVER['HTTP_HOST']))){
// GET HOST
$host = $_SERVER['HTTP_REFERER'];
// GET DATE
$date = date("d/M/Y H:m:s O");
// GET IP
if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown")){
$ip = getenv("HTTP_CLIENT_IP");
} elseif (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown")){
$ip = getenv("HTTP_X_FORWARDED_FOR");
} elseif (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown")){
$ip = getenv("REMOTE_ADDR");
} elseif (!empty($_SERVER["REMOTE_ADDR"]) && strcasecmp($_SERVER["REMOTE_ADDR"], "unknown")){
$ip = $_SERVER["REMOTE_ADDR"];
} else {
$ip = "unknown";
}
// Логи пишутся в файл и переделать код под
// запись статистики в БД несостакит труда
// Creation log string
$str = "[".$date."] USER_IP: ".$ip."; HOST: ".$host.";
";
// Write statistics in log file
$fp = fopen($_SERVER['DOCUMENT_ROOT'] . "/statistic.log", "a");
fwrite($fp, $str);
fclose($fp);
}
// в этом примере просто выводится картинка,
// но можно с помощью модуля GD выводить статистические данные на картинке
// Return image statistics
header("Content-Type: image/jpeg");
readfile($_SERVER['DOCUMENT_ROOT'] . "/statistic.jpg");
?>
//print_r($_SERVER);
if (isset($_SERVER['HTTP_REFERER']) &&
(!strstr($_SERVER['HTTP_REFERER'], $_SERVER['HTTP_HOST']))){
// GET HOST
$host = $_SERVER['HTTP_REFERER'];
// GET DATE
$date = date("d/M/Y H:m:s O");
// GET IP
if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown")){
$ip = getenv("HTTP_CLIENT_IP");
} elseif (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown")){
$ip = getenv("HTTP_X_FORWARDED_FOR");
} elseif (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown")){
$ip = getenv("REMOTE_ADDR");
} elseif (!empty($_SERVER["REMOTE_ADDR"]) && strcasecmp($_SERVER["REMOTE_ADDR"], "unknown")){
$ip = $_SERVER["REMOTE_ADDR"];
} else {
$ip = "unknown";
}
// Логи пишутся в файл и переделать код под
// запись статистики в БД несостакит труда
// Creation log string
$str = "[".$date."] USER_IP: ".$ip."; HOST: ".$host.";
";
// Write statistics in log file
$fp = fopen($_SERVER['DOCUMENT_ROOT'] . "/statistic.log", "a");
fwrite($fp, $str);
fclose($fp);
}
// в этом примере просто выводится картинка,
// но можно с помощью модуля GD выводить статистические данные на картинке
// Return image statistics
header("Content-Type: image/jpeg");
readfile($_SERVER['DOCUMENT_ROOT'] . "/statistic.jpg");
?>
не надо забывать о том, что статистические данные получаются с той странице, на которой весит эта картинка.
И соответственно для получения статистики со всего сайта нужно, что бы эта картинка висела на каждой странице сайта
Спасибо, люди, за ценные советы)) В особенности dead_star) Только мне даже картинку ставить необязательно. Просто скрипт следящий за статистикой уникальных посещений, скажем в месяц. А по поводу тИЦ...скриптов конечно куча, но пока не нашел работоспособного. Показывает постоянно "0". А сам написать парсер на PHP, боюсь, не смогу. Еще раз спс баааальшущий)))