Forum Webscript.Ru

Программирование => PHP => Тема начата: Alexandr от 18 Июня 2002, 13:12:43

Название: Избранное & favicon.ico & PHP
Отправлено: Alexandr от 18 Июня 2002, 13:12:43
Как можно отлавливать что у меня юзер favicon.ico выпрашивает? (эт для того что бы знать сколько человек мой сайт в избранное добавили)
Ща я так смотрю:
Заглядываю в error.log. Если там есть такая строчка:
[error] [client 80.237.8.36] File does not exist: /web/autodealer/site/www/addsite/autodiler.ru/favicon.ico
Значит юзер добавил сайт в избранное.
НО ЭТО ИЗВРАТ.
Название: Избранное & favicon.ico & PHP
Отправлено: AlieN от 18 Июня 2002, 14:48:36
Alexandr
Первое что пришло в голову:

$data=file("error.log");
for($i=0;$i{
list($date,$type,$client,$error)=split(" ",$data[$i]);
if(ereg("favicon.ico",$error){print "Типа $client в $date решил проверить на наличие иконки";}
}
?>
Название: Избранное & favicon.ico & PHP
Отправлено: Alexandr от 18 Июня 2002, 15:44:27
Не покатит.
favicon.ico мне надо на сайт кинуть, что бы иконка в IE была, а следовательно в ерор.логе её не будет.
И ещё твой скрипт придётся запускать по расписанию.
Название: Избранное & favicon.ico & PHP
Отправлено: AlieN от 18 Июня 2002, 17:47:08
Alexandr
Капля воображения и скрипт переписывается под access.log:

$data=file("access.log");
for($i=0;$i{
if(ereg("(.*) - (.*) - [(.*)] - \\"(.*)\\" - (.*) - (.*)",$data[$i],$regs))
{
if(ereg("favicon.ico",$regs[4]){print "Типа $regs[1]($regs[2]) в $regs[3] решил проверить на наличие иконки";}
}
}
?>
Название: Избранное & favicon.ico & PHP
Отправлено: от 19 Июня 2002, 13:13:49
Цитировать
Заглядываю в error.log. Если там есть такая строчка:
[error] [client 80.237.8.36] File does not exist: /web/autodealer/site/www/addsite/autodiler.ru/favicon.ico
Значит юзер добавил сайт в избранное.

бред.
Название: Избранное & favicon.ico & PHP
Отправлено: AlieN от 19 Июня 2002, 13:34:32
Unregistered
Почему же?
Название: Избранное & favicon.ico & PHP
Отправлено: от 21 Июня 2002, 03:21:16
Цитировать
Unregistered
Почему же?

по жизни.
берем, например, мозиллу. И идем, например, на http://sourceforge.net/
ждем окончания загрузки страницы и любуемся на красивенький кружочек в адресной строке.
В избранное, ес-сно, не добавляем.
Имя файла с этим кружочком сказать, или сами догадаетесь?


WBR,
  Voodoo
http://voc.sf.net/
Название: Избранное & favicon.ico & PHP
Отправлено: Меняздесьдавнонет от 21 Июня 2002, 07:51:09
Оффтопик.
ОЧЕНЬ неоптимальный алгоритм.
На каждую строку напускается два ерега, один из которых не нужен вовсе.
Куда быстрее будет проверять по strstr() наличие в строке "favicon.ico" и только в этом случае натравливать ерег.
Название: Избранное & favicon.ico & PHP
Отправлено: YA от 21 Июня 2002, 08:03:12
http://forums.webscript.ru/showthread.php?s=&threadid=5428&msgnum=7
Название: Избранное & favicon.ico & PHP
Отправлено: Меняздесьдавнонет от 21 Июня 2002, 08:31:55
ЖУТЬ!
он не неоптимаьный! Он вообще нерабочий.

list($micro,$time)=explode(" ",microtime());
$stamp=$micro+$time;
$data=file("log.txt");
for($i=0;$i<200;$i++)
{
if(ereg("(.*) - - \\[(.*)\\] \\"(.*)\\" (.*) \\"(.*)\\" \\"(.*)\\"",$data[$i],$regs))
{
if(ereg("styles.css",$regs[3])){print "Типа $regs[1] в $regs[2] решил проверить на наличие иконки
";}
}
}
list($micro,$time)=explode(" ",microtime());
echo ($micro+$time)-$stamp;

Только 200 итераций он деает 8 секунд!!!
А вот это

$data=file("log.txt");
for($i=0;$i  if(strstr($data[$i],"styles.css")) {
    if(ereg("(.*) - - \\[(.*)\\] \\"(.*)\\" (.*) \\"(.*)\\" \\"(.*)\\"",$data[$i],$regs)) echo "Типа $regs[1] в $regs[2] решил проверить
";
  }
}

отработало за секунду, а весь лог в 400к - за 12.
Честно говоря, я не ожидал такой огромной разницы.
Название: Избранное & favicon.ico & PHP
Отправлено: Меняздесьдавнонет от 21 Июня 2002, 08:35:43
идем дальше.
Вспоминаем, что ереги медленнее прегов.
Пишем
if(preg_match("/(.*) - - \\[(.*)\\] \\"(.*)\\" .*/",$data[$i],$regs))
И получаем приемлемый результат - 0.2 секунды на весь файл.
Название: Избранное & favicon.ico & PHP
Отправлено: Меняздесьдавнонет от 21 Июня 2002, 08:41:27
Справедливости ради, надо признать, что если проверять прегом даже каждую строчку, то все равно получается быстро. Но это не оправдание писать неоптимальные прогаммы :-)
Название: Избранное & favicon.ico & PHP
Отправлено: Alexandr от 21 Июня 2002, 11:38:00
access.log У меня весит 10 мегов.
Так что не покатит.
Название: Избранное & favicon.ico & PHP
Отправлено: Меняздесьдавнонет от 21 Июня 2002, 12:12:14
У тебя не катит даже не по этой причине.
См. сообщение от YA
Название: Избранное & favicon.ico & PHP
Отправлено: Alexandr от 24 Июня 2002, 08:58:25
Цитировать
У тебя не катит даже не по этой причине.
См. сообщение от YA

Ну можно же базу по IP\'шникам подбивать.
Название: Избранное & favicon.ico & PHP
Отправлено: Maniac от 24 Июня 2002, 11:19:09
>Ну можно же базу по IP\'шникам подбивать.

Да можно, все можно. Только гемморой это. Как только начинаешь вместо того, чтобы написать новый алгоритм, навешивать на старый всякие примочки - ничего путного не выйдет.
Вообще, нет способа однозначно определить юзвера. Cookie многие у себя запрещают (потому как пугаются сплеш-скрина, вопящего о них), Ip-адрес определять вообще неэффективно в виду широкого развития Dial-up\'a и наличия прокси-серверов.
И вообще, зачем тебе знать, сколько юзверов добавили твой сайт в избранное? Может, лучше знать сколько юзверов по таким ссылкам пришло?
Название: Избранное & favicon.ico & PHP
Отправлено: Alexandr от 24 Июня 2002, 17:31:32
Цитировать
Может, лучше знать сколько юзверов по таким ссылкам пришло?

А это как?
Название: Избранное & favicon.ico & PHP
Отправлено: AlieN от 24 Июня 2002, 19:35:22
Alexandr
spylog.ru
hotlog.ru
Название: Избранное & favicon.ico & PHP
Отправлено: Alexandr от 25 Июня 2002, 09:25:58
Цитировать
spylog.ru
hotlog.ru

А самому (PHP)?
Название: Избранное & favicon.ico & PHP
Отправлено: Maniac от 25 Июня 2002, 10:51:57
А ты попробуй поле HTTP-REFERER проанализировать. Если пустое - значит глупый юзверь либо ручками адрес набил, либо из Избранных вошел (что, IMHO (http://www.tuxedo.org/~esr/jargon/html/entry/IMHO.html) разницы большой не имеет)
Название: Избранное & favicon.ico & PHP
Отправлено: Messerscmitt от 26 Июня 2002, 09:50:34
Подобный вопрос встречаю уже в который раз.
Ребята !
Зачем  по второму кругу делать то, что уже делает Апаче ?
Однозначно нужно парсить логи специальной программой, не перегружая по пустякам вебсервер.
Одна из программ лежит здесь : http://www.mach5.com/

[OFF] если у вас 1000 файлов надо проанализтровать - вы 1000 скриптов писать будете ?[/OFF]
Название: Избранное & favicon.ico & PHP
Отправлено: Maniac от 26 Июня 2002, 10:21:59
У меня на сайте логи ведутся за неделю и занимают мега по четыре каждый. Нафиг мне столько лопатить? Кроме того, многие провайдеры (особенно халявные) не дают вести логи.

И, наконец, причем тут логи? (см. начало беседы)
Название: Избранное & favicon.ico & PHP
Отправлено: Alexandr от 26 Июня 2002, 12:40:40
Цитировать
А ты попробуй поле HTTP-REFERER проанализировать. Если пустое - значит глупый юзверь либо ручками адрес набил, либо из Избранных вошел (что, IMHO разницы большой не имеет)

Как раз так имеет, т.к. юзер является потенциальным постоянным посетителем твоего сайта!
Название: Избранное & favicon.ico & PHP
Отправлено: Maniac от 26 Июня 2002, 12:56:31
А если он твой адрес запомнил и ручками адрес набивает, то он не потенциальный? Я, например, большую часть адресов запоминаю.
Название: Избранное & favicon.ico & PHP
Отправлено: Alexandr от 01 Июля 2002, 15:05:40
Цитировать
Избранное & favicon.ico & PHP

Понял, что я хотел.
Мона ч/з mod_rewrite