АРМАДА
статистика для php файла
На страницу 1, 2  След.
Новая тема Написать ответ Advanced Hosters - профессиональный хостинг

Tomas-R + +
V.I.P.
Зарегистрирован: 07.01.2008
Сообщений: 5573
Обратиться по нику
# Добавлено:Пт Фев 26, 2010 3:17 pmДобавить в избранноеОтветить с цитатой
есть php файл с редиректом на 2 ссылки / по очереди
нужно вести учет посетителей этого файла
подскажите как реализовть если
1 нет TDS
2 многие counters используют javascript - а предполагается приход траффика без javascript
рекламная подпись (в PM)

zeoman
V.I.P.
Зарегистрирован: 19.03.2008
Сообщений: 3708
Обратиться по нику
# Добавлено:Пт Фев 26, 2010 4:28 pmОтветить с цитатой
Tomas-R, а там никак в iframe картинку 1х1 вставить нельзя? Можно поставить на каждом выходе по одной картинке, а потом смотреть какая из них сколько раз запрашивалась.
BidTraffic - Зарабатывай больше! | Мамин ребёнок | Бросить курить

IseeDeadPeople
Объединенная Электрическая
Зарегистрирован: 06.12.2005
Сообщений: 18000
Обратиться по нику
# Добавлено:Пт Фев 26, 2010 6:33 pmОтветить с цитатой
вот нож:

Код:
<?

$LINKS = array("http://www.ya.ru/?site1","http://www.bing.com/?site2");
/*
сколько угодно делай, хоть так:

$LINKS = array(
"http://site1",
"http://site2",
"http://site3",
"http://site4",
"http://site5"
);

распределение, каждый раз, независимо, выбор случайно.

*/

$LOGSIZEinKB = "250";
// максимум 250 килобайт на лог файл, после превышения - чиститься
// делай до мегабайте, а то через ИЕ будет долгий пони просмотр,
// если будешь локально (через FAR смотреть) то хоть 5+ Мб. (до 7 Мб рек., не более !)

$LOGFILE = "logx7.txt";
// выбирайте разные имена, - они видны с веба,
// также, если "папка в развертке" с веба, создайте файл "index.htm" в директории где это фсё,
// или поставте запрет через .htaccess одной строкой: Options -Indexes

// статистику, конечно смотреть как хттп://домен.ком/папка/logx7.txt из браузера напр.


srand ((double) microtime() * 1000000);
mt_srand ((double) microtime() * 1000000);
function lock ($fp, $lock_level=LOCK_EX) {@flock($fp, $lock_level);return 0;}
function unlock ($fp, $lock_level=LOCK_UN) {@flock($fp, $lock_level);return 0;}
function phpfput ($file, $text) {if (strlen($file) > 0) {$fp = fopen( $file, "w"); lock($fp); fputs($fp, $text); unlock($fp); fclose($fp);}return 0;}     
function phpfget ($file) {$return = "";if (strlen($file) > 0 && file_exists($file)) {$fp = fopen( $file, "r"); lock($fp); while (!feof ($fp)) {$buffer = fgets($fp, 1024);$return .= $buffer;} unlock($fp); fclose($fp);}return $return;}
function phpfadd ($file, $text) {return phpfput($file, phpfget($file) . $text);}
function phpfsize ($file) {if (!file_exists($file)) return 0;return filesize($file);}


shuffle($LINKS);
$link = array_shift($LINKS);

$STD_UA = $_SERVER["HTTP_USER_AGENT"]; if (empty($STD_UA)) { $STD_UA = "not_Detect"; }
$STD_REF = $_SERVER["HTTP_REFERER"]; if (empty($STD_REF)) { $STD_REF = "DirectRequest/bot"; }
$STD_RA = $_SERVER["REMOTE_ADDR"];
$im_log = $_SERVER["REQUEST_URI"];

if (!file_exists($LOGFILE)) { phpfput($LOGFILE, "first created : ".date("Y m d H:i:s") . "\n\n"); } 
if (phpfsize($LOGFILE) > $LOGSIZEinKB*1024) { phpfput($LOGFILE, "created : ".date("Y m d H:i:s") . "\n\n"); } 

phpfadd($LOGFILE, date("Y m d H:i:s"). " - '".htmlspecialchars($link)."' - '". htmlspecialchars($im_log) ."' - '".htmlspecialchars($STD_REF)."' - '".htmlspecialchars($STD_UA)."' '".htmlspecialchars($STD_RA). "' \n");

header("Location: $link");
exit();

// проверено - работает, пхп5.

/*
перед использованием, хорошо бы зайти по ФТП в папку где будет стоять скрипт,
и самому создать там файл логов, и поставить на него права доступа 666,
файл и так будет создан, (если на папке в котой он, на ней стоит 777, как парвило - нет) без этих действий, просто:
ошибки и фсё,
или
иначе потом могут быть проблемы удаления файла логов с ФТП,
когда захотите фсё стереть там сами,
решаеться как удалить его из файл_менеджера, из панели хостера.
*/

?>



тут в нормальном виде

лог дает такой:
Цитата:
2010 02 26 18:06:19 - 'http://www.bing.com/?site2' - '/p/mytds.php' - 'http://web-sniffer.net/' - 'Web-sniffer/1.0.31 (+http://web-sniffer.net/)' '188.93.10.56'
2010 02 26 18:07:53 - 'http://www.bing.com/?site2' - '/p/mytds.php' - 'http://web-sniffer.net/' - 'Web-sniffer/1.0.31 (+http://web-sniffer.net/)' '188.93.10.56'
2010 02 26 18:07:55 - 'http://www.ya.ru/?site1' - '/p/mytds.php' - 'http://web-sniffer.net/' - 'Web-sniffer/1.0.31 (+http://web-sniffer.net/)' '188.93.10.56'
2010 02 26 18:07:59 - 'http://www.ya.ru/?site1' - '/p/mytds.php' - 'http://web-sniffer.net/' - 'Web-sniffer/1.0.31 (+http://web-sniffer.net/)' '188.93.10.56'
2010 02 26 18:08:01 - 'http://www.ya.ru/?site1' - '/p/mytds.php' - 'http://web-sniffer.net/' - 'Web-sniffer/1.0.31 (+http://web-sniffer.net/)' '188.93.10.56'
2010 02 26 18:08:03 - 'http://www.ya.ru/?site1' - '/p/mytds.php' - 'http://web-sniffer.net/' - 'Web-sniffer/1.0.31 (+http://web-sniffer.net/)' '188.93.10.56'
2010 02 26 18:08:05 - 'http://www.bing.com/?site2' - '/p/mytds.php' - 'http://web-sniffer.net/' - 'Web-sniffer/1.0.31 (+http://web-sniffer.net/)' '188.93.10.56'
2010 02 26 18:08:07 - 'http://www.ya.ru/?site1' - '/p/mytds.php' - 'http://web-sniffer.net/' - 'Web-sniffer/1.0.31 (+http://web-sniffer.net/)' '188.93.10.56'
2010 02 26 18:08:12 - 'http://www.ya.ru/?site1' - '/p/mytds.php' - 'http://web-sniffer.net/' - 'Web-sniffer/1.0.31 (+http://web-sniffer.net/)' '188.93.10.56'
2010 02 26 18:08:14 - 'http://www.bing.com/?site2' - '/p/mytds.php' - 'http://web-sniffer.net/' - 'Web-sniffer/1.0.31 (+http://web-sniffer.net/)' '188.93.10.56'
2010 02 26 18:08:16 - 'http://www.ya.ru/?site1' - '/p/mytds.php' - 'http://web-sniffer.net/' - 'Web-sniffer/1.0.31 (+http://web-sniffer.net/)' '188.93.10.56'
2010 02 26 18:08:18 - 'http://www.ya.ru/?site1' - '/p/mytds.php' - 'http://web-sniffer.net/' - 'Web-sniffer/1.0.31 (+http://web-sniffer.net/)' '188.93.10.56'



реально "по очереди" делать глупо, если человек заходит один раз.
мой вариант, конечно более рационален, если линков разных от 3-5 штук
http://m.lsl.com/

BloodyThor
Свой
Зарегистрирован: 23.11.2005
Сообщений: 94
Обратиться по нику
# Добавлено:Пт Фев 26, 2010 8:41 pmОтветить с цитатой
1 заход или в куке содержиться цифра 1) редиректим на урл1 и ставим куку с цифрой 2
2 заход(в куке цифра 2)) редиректим на урл2 и ставим куку с цифрой 1
это если нужна простая очередность(без выборок по ИП и т.д.)
запись в лог можно взять постом выше
-----------
сам алгоритм очень простой но если нужно именно просто отправлять по очередности лучше не найдешь

Tomas-R + +
V.I.P.
Зарегистрирован: 07.01.2008
Сообщений: 5573
Обратиться по нику
# Добавлено:Пт Фев 26, 2010 9:24 pmОтветить с цитатой
Спасибо - но возможен ли вариант статистику чтобы внизу - ИТОГО: RAW / UNIQ
рекламная подпись (в PM)

Ronald Wild
V.I.P.
Зарегистрирован: 29.09.2006
Сообщений: 1959
Обратиться по нику
# Добавлено:Пт Фев 26, 2010 10:15 pmОтветить с цитатой
Tomas-R писал(а):
многие counters используют javascript - а предполагается приход траффика без javascript

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

IseeDeadPeople
Объединенная Электрическая
Зарегистрирован: 06.12.2005
Сообщений: 18000
Обратиться по нику
# Добавлено:Пт Фев 26, 2010 11:42 pmОтветить с цитатой
Tomas-R писал(а):
Спасибо - но возможен ли вариант статистику чтобы внизу - ИТОГО: RAW / UNIQ



можно, да протестировано* также, работает.

с куками бы тоже реализовал, как написали тут выше (спасибо ему за идею, так сказать), только с ними (куками в пхп) неработал плотно,

но если очень надо, то опиши как, начинаем с линейно с первого по последний и потом первый, или начинаем случайно с какого то рандомно, по последний и потом первый..
только ручаться, что сделаю и в какой то срок, - конечно немогу.

[offtop]
*) непротестирован только этот участок,
Код:
if (file_exists($CONTROLOIPOS."b_time.txt") && ((time() - phpfget($CONTROLOIPOS."b_time.txt")) > $CONTROLOIPOS_TIMEREFRESH)) {
cleardir_onlyip($CONTROLOIPOS);
phpfput($CONTROLOIPOS."b_time.txt", time());
}



т.к. ждать неделю долго, а так протестить легко самоочистку диры ипов, - через ФТП поставьте 0 в файл "cntrip/b_time.txt"..

______

строка комментария в файле выше
"очищать как заполнять нулём файл по ФТП"
никакого смысла неимеет, на неё внимания необращать.

[/offtop]


Последний раз редактировалось: IseeDeadPeople (Пт Фев 26, 2010 11:54 pm), всего редактировалось 1 раз
http://m.lsl.com/

Ronald Wild
V.I.P.
Зарегистрирован: 29.09.2006
Сообщений: 1959
Обратиться по нику
# Добавлено:Пт Фев 26, 2010 11:52 pmОтветить с цитатой
Tomas-R, а чем анализаторы серверных логов не устраивают? Или доступа к ним нет?

Tomas-R + +
V.I.P.
Зарегистрирован: 07.01.2008
Сообщений: 5573
Обратиться по нику
# Добавлено:Сб Фев 27, 2010 12:09 amОтветить с цитатой
AWSTATS?
рекламная подпись (в PM)

Ronald Wild
V.I.P.
Зарегистрирован: 29.09.2006
Сообщений: 1959
Обратиться по нику
# Добавлено:Сб Фев 27, 2010 1:47 amОтветить с цитатой
Не обязательно. Есть десктопные анализаторы, например, AlterWind (он не самый лучший, просто навскидку сейчас названий не помню), выкачиваешь логи, скармливаешь ему и смотришь любые отчеты по трафику.

BloodyThor
Свой
Зарегистрирован: 23.11.2005
Сообщений: 94
Обратиться по нику
# Добавлено:Сб Фев 27, 2010 1:26 pmОтветить с цитатой
Ronald Wild, скачивать и перлопачивать тонны логов апача ради статов по двум урлам не есть выгодно по времени плюс логи апача только скажут что была затребованна страница такая то в такое то время, а вот куда ушел пользователь с этой страницы нет.
IseeDeadPeople, в php есть функция setcookie
вот выдержка с этой страницы, думаю это то что нам надо(кука умрет через час), слегка подредактировал:
Код:

<?php
header('Location: http://www.url_n.com/');
setcookie('mega_our_counter', $counter, time()+60*60);
?>


Tomas-R, в прицнипе должно работать если поменять в коде сверху:
исходный код:
Код:

shuffle($LINKS);
$link = array_shift($LINKS);


поменять на:
Код:



if (isset($_COOKIE['mega_our_counter']))
{

$counter=intval($_COOKIE['mega_our_counter']);

}
else
{
$counter=0;
};

If (isset($LINKS[$counter])) {$link=$LINKS[$counter];} else {$counter=0;$link=$LINKS[$counter];};

$counter++;


и
Код:

header("Location: $link");


на
Код:

header("Location: $link");
setcookie('mega_our_counter', $counter, time()+3600);


Кука будет жить час, если надо больше цифру 3600(в секундах) поменять на большие значение.
Если надо вечно, вообще убрать
Код:

, time()+3600


---------
Код писал в блакноте, к сожалению не на своём компе сейчас, поэтому могут быть ошибки.
Код выведен так странно потому что у меня какие то глюки с отправкой сообщений, в предварительном все нормально, в окончательно посте каша в не понятной кодеровке..Так что извените за нечитабельность

IseeDeadPeople
Объединенная Электрическая
Зарегистрирован: 06.12.2005
Сообщений: 18000
Обратиться по нику
# Добавлено:Сб Фев 27, 2010 3:46 pmОтветить с цитатой
BloodyThor, молодец, посмотрел, всё верно, тестить уж небуду. Angel

только советую поставить строго неделю "time()+86400*7" в куках, т.к. по умолчанию ипы труться каждые семь дней, думаю разумно будет так.
http://m.lsl.com/

BloodyThor
Свой
Зарегистрирован: 23.11.2005
Сообщений: 94
Обратиться по нику
# Добавлено:Сб Фев 27, 2010 3:56 pmОтветить с цитатой
во нарыл у себя в архивах, прикольный код(только когда я его писал уже не помню, но очень давно):
Код:

$str_date=date("r");
$exp_date = mktime (date("H")+1,date("i"),date("s"),date("m")  ,date("d"),date("Y"));
$str_exp_date=strftime("%a, %d %b %Y %H:%M:%S GMT",$exp_date);
header("Status: 302 Moved\n");
header("Set-Cookie: rcg=$counter; path=/; expires=".$str_exp_date."\n");
header("Date: ".$str_date."\n");
header("Location: ".$redirect_url."\n\n");


судя по скрипту можно вообще дату влодь до секунды установить )))
допустим
Код:

$exp_date = mktime (date("H"),date("i"),date("s"),date("m")+1,date("d"),date("Y")&­#41;;


целый месяц )))
блин опять глюки с постом, не знаю в чем проблема на этом компе :`(
испровлять не буду , потому что не знаю как, извините
-----------
[offtop]ещё 7 обдуманных постов, и я буду мега чел, по 20 постов в год, кто ещё так сможет :rr6: [/offtop]

IseeDeadPeople
Объединенная Электрическая
Зарегистрирован: 06.12.2005
Сообщений: 18000
Обратиться по нику
# Добавлено:Сб Фев 27, 2010 4:59 pmОтветить с цитатой
ну ставить кук на секунду - жесть,
и я просто посоветовал всетакие в setcookie ставить какое то больше значение, и неоставлять пустым,
т.к. знаю, незнаю как там в setcookie обрабатываеться, но если в хидере браузеру, не будет указания времени куки, то браузер будет хранить куку только пока идет сессия этого окна, т.е. переходить со страницы на страницу в одном окне - окей, кука сидит, как только браузер закрыли, всё - кука треться.
и скорее всего, как помню, именно так и будет, если setcookie не дать какое то значение.

насчет блин опять глюки с постом, не знаю в чем проблема на этом компе
испровлять не буду , потому что не знаю как, извините

это не у тебя глюки, это форум сложный пхп код (да и другой, где скобки/точка с запятой на конце..) "ломает"..
поэтому стараться исправить - смысла нет, просто если код большой, можно делать как я выше, - не тут его приводить, а у себя на хосте как .txt выкладывать..
но с основным твоим примером, с исправлениями-заменами моего, вроде ошибок таких невижу.

Smiley Eats Cursor
http://m.lsl.com/

BloodyThor
Свой
Зарегистрирован: 23.11.2005
Сообщений: 94
Обратиться по нику
# Добавлено:Сб Фев 27, 2010 5:06 pmОтветить с цитатой
Ошибок нет, зато код плохо читаеться, из за множества переносов на другую строку, я так исправил проблему поста Smile
что бы браузер удалял куку при закрытыи надо поставить "птицу" в настройках(по умолчанию она вырублена(у меня в опере вырублена)), если не стоит так он просто её сохраняет на винте в файле на вечно, если её принудительно не удалить...
в принципе, если память не изменяет, по протоколу обмена если не стоит дата оканчания куки она должна быть вечной...
Кстати, почему ИП именно на неделю, я всегда считал что уником считаеться ИП заходящий раз в день?
[offtop]ещё 6 обдуманных постов, и я буду мега чел, по 20 постов в год, кто ещё так сможет :rr6: [/offtop]
Новая тема Написать ответ    ГЛАВНАЯ ~ ТЕХНИЧЕСКИЕ ВОПРОСЫ

Перейти:  





Генеральный спонсор



Партнеры