Блог Обо мне Храню Читаю Ем 99  

20.03.2008, Nº 1631



Система статистики «Spesta 2.10 a+b»

Спеста (0.30KB) Какое-то время назад я патчил (два раза) систему статистики «Спеста» Дмитрия Смирнова, правил дыры и ошибки. Сама система мне нравится — простая, понятная, после патчей даже работает неплохо. Но при работе генерирует кучу warnings и notices, что захламляет мой лог ошибок и настраивать её не слишком-то приятно.

Недавно я узнал, что существует клон это системы — Spesta 2, который написали в Analog Group. Приятно, что код написан с форматированием и почти не генерирует warnings и notices, но общее ощущение — что авторы двигались в правильном направлении, но заплутали по дороге.

Я было думал выпустить серию патчей, как это было со «Спестой», но патчей оказалось слишком много. В общем, выложил пропатченную версию у себя. Кому надо — забирайте. Оригинальная версия была 2.00a, эта называется 2.10a+b, потому что на «бету» она не тянет, а пачти обозначить как-то надо.

Итак, изменения, всё что успел увидеть и поправить за час работы:
  • нарисован favicon и дорисован логотип
  • выкинута реализация функции in_array (авторы плохо знают язык?)
  • работа с файлами заменена на более безопасную — с flock и append. Там где можно, используются file_get_contents и file_put_contents (это означает, что раньше эта система «теряла» часть данных)
  • патч для более точного подсчёта уников (с использованием данных браузера)
  • вычищены .htaccess от лишнего мусора
  • поправлены регулярные выражения в коде
  • переписан странный поиск с stristr
  • на странице хитов теперь выводятся тИЦ и Page Rank
  • сделан парольный вход, задаётся в конфиге (по умолчанию, логин — admin, пароль — test)
  • для совместимости со «Спестой» сделан файл click.php
  • исправлены ситуации, в которых генерировались notices и warnings (в основном — на пустых данных)
  • исправлена ошибка в работе с файлом sites.txt
  • ряд мелких улучшений кода, которые лень описывать
Важно: данные «Спесты» и «Спесты 2» между собой несовместимы, т.е. вы потеряете предыдущую статистику при замене одной версии на другую. Второе важное замечание — в «Спесте 2» нет статистики по кликам на ссылки и IP-адресам (лично мне она не нужна, так что вставлять в код я её не буду).

Инструкция по установке: распаковываете в нужную папку «Спесту 2», скрипт должен иметь возможность писать в папки data и reports. Если у вас была оригинальная «Спеста», удалите её, поверх ставить нельзя. Далее, вы должны подключить «Спесту» на каждой странице вашего сайта. Для PHP это будет выглядеть так:
<?include 'каталог со спестой/counter.php'?>;

для HTML страниц можно попробовать сделать следующее:
<!--#include virtual='/каталог со спестой/counter.php' -->

Ссылка для невнимательных, скачать можно отсюда: http://bolknote.ru/files/spesta-210.zip.
20.03 13:16
20.03 13:16



20.03.2008, Nº 1631

#1 roodz.livejournal.com 20.03.2008, 13:27

Статистика по IP штука нужная - люди таким образом заходы с офисов конкурентов и интерес конкретных клиентов заценяют.

#2 bolk @bolknote.ru20.03.2008, 14:03 ответил roodz.livejournal.com

Мне она не нужна — какие могут быть «офисы конкурентов и интерес клиентов» у меня на блоге?

#3 skurudo @openid.yandex.ru/users/skurudo20.03.2008, 15:11 ответил bolknote.ru

PR забавно работает. Показывает 0. А ведь там и правда он должен быть, ведь у страницы статистики нет PR вообще -_-

#4 bolk @bolknote.ru20.03.2008, 15:21

Гм… да, я позабыл, что Page Rank он для страницы, а не для сайта, вот чёрт…

#5 skurudo @openid.yandex.ru/users/skurudo20.03.2008, 15:37 ответил bolknote.ru

Warning: touch() [function.touch]: Utime failed: Operation not permitted in /home/skurudo/skurudo.ru/www/stat/includes/index.i­nc.php on line 124

Подскажи, пожалуйста, как лечить?

#6 skurudo.livejournal.com 20.03.2008, 15:40 ответил bolknote.ru

http://www.prchecker.info/page…heck-button.php - можно на что-то такое заменить, там как раз для сайта. Генерируется типа уникальная ссылка и можно ставить.

#7 bolk @bolknote.ru20.03.2008, 15:40

Поправил это, спасибо!

#8 bolk @bolknote.ru20.03.2008, 15:42

Надо поставить права на запись на папки data и reports.

Можно качать новую версию — баг с PR поправил (находится на том же месте, файл называется так же).

#9 skurudo.livejournal.com 20.03.2008, 15:46 ответил bolknote.ru

drwxrwxrwx 2 skurudo users 512 Mar 20 15:05 data
drwxrwxrwx 2 skurudo users 512 Mar 20 15:32 reports

Уже стоят вообще-то.

#10 makoratao.livejournal.com 20.03.2008, 15:49

а что в этой спесте нового вообще есть?

#11 skurudo.livejournal.com 20.03.2008, 15:53 ответил makoratao.livejournal.com

Читай, друже, изменения у болка и у Аналогов:
http://www.analog-group.ru/projects/spesta2.html

#12 bolk @bolknote.ru20.03.2008, 15:54 ответил skurudo.livejournal.com

А на файлы, которые внутри?

#13 bolk @bolknote.ru20.03.2008, 15:54 ответил makoratao.livejournal.com

Это не новая «Спеста», это другая «Спеста».

#14 skurudo.livejournal.com 20.03.2008, 16:19 ответил bolknote.ru

drwxrwxrwx 5 skurudo users 512 Mar 20 15:21 ..
-rwxrwxrwx 1 skurudo users 82 Mar 20 14:43 .htaccess
-rwxrwxrwx 1 skurudo users 1526 Mar 20 16:06 agents.txt
-rwxrwxrwx 1 wwwserver users 25 Mar 20 16:06 count.txt
-rwxrwxrwx 1 wwwserver users 224 Mar 20 16:06 ip.txt
-rwxrwxrwx 1 skurudo users 308 Mar 20 15:42 referers.txt
-rwxrwxrwx 1 skurudo users 4466 Mar 20 16:06 requests.txt
-rwxrwxrwx 1 wwwserver users 262 Mar 20 15:30 se.txt
-rwxrwxrwx 1 wwwserver users 262 Mar 20 15:30 se10.txt
-rwxrwxrwx 1 skurudo users 0 Mar 20 14:43 spiders.txt
-rwxrwxrwx 1 skurudo users 91 Mar 20 15:30 words.txt

Тоже нормал вроде бы.

#15 teplorod.livejournal.com 20.03.2008, 16:20

Очень здорово, что Вы это сделали.
Но вот статистики по "кликам" очень нехватает.
Буду очень признателен, если Вы ее все-таки прикрутите.

#16 skurudo.livejournal.com 20.03.2008, 16:24 ответил bolknote.ru

болтикова в Поисковых словах... не понимает utf8? Или это персонально у меня такое? :-)

#17 bolk @bolknote.ru20.03.2008, 16:30 ответил skurudo.livejournal.com

Гм, так проблема с правами ушла или нет? Если нет, то попробуй вписать туда var_dump($fstat); после touch и посмотри в какой файл оно пытается писать.

А с unicode там смешно — оно его только для google делает, для остальных — нет. Надо доделать, я думаю. А это какой поисковик?

#18 bolk @bolknote.ru20.03.2008, 16:31 ответил teplorod.livejournal.com

Хм… а зачем она, кстати? Может и сделаю, если пойму зачем она.

#19 alick @alick.ru20.03.2008, 16:33

! ..\spesta-210.zip: The archive is corrupt

Архив поломатый.

#20 bolk @bolknote.ru20.03.2008, 16:38 ответил alick.ru

Перезалил. Пашет?

#21 bolk @bolknote.ru20.03.2008, 16:39 ответил skurudo.livejournal.com

Сейчас попробовал воткнуть туда обнаружение кодировки. Кстати, у вас модули iconv или multibyte string есть? Я выкинул оттуда «ручное» преобразование, понадеявшись, что эти модули есть у всех.

#22 teplorod.livejournal.com 20.03.2008, 16:39 ответил bolknote.ru

Статистика по кликам нужна в двух случаях:
1. Если рекламу на ресурсе продали, и нужно отследить эффективность.

2. Чтобы посмотреть, с каких страниц народ активно уходит по ссылкам.
Вот пример: http://flogiston.ru/stat/?report=l
(демо-пароль и логин стандартные для прежних версий spesta)
Для меня эта статистика полезна, т.к. я знаю, где людям не хватает контента, и они с сайта уходят.

#23 skurudo.livejournal.com 20.03.2008, 16:43 ответил bolknote.ru

Будешь смеяться, но ошибка была только с теми отчетами, которые от моего имени создались. Там выше есть список. А отчеты собственно: referers.txt, requests.txt, spiders.txt, words.txt. Удалил в пень. Оно создало заново уже от себя, в смысле от имении wwwserver'a.

#24 bolk @bolknote.ru20.03.2008, 16:44 ответил teplorod.livejournal.com

Понятно. Возможно сделаю в скором времени, ничего не обещаю.

#25 bolk @bolknote.ru20.03.2008, 16:45 ответил skurudo.livejournal.com

Ну и бог с ними :) Я из архива эти файлы вообще убрал :)

#26 skurudo.livejournal.com 20.03.2008, 16:48 ответил bolknote.ru

Можно на "ты". Скуруда не нежный.

Error where found in ZIP file ;-(


#27 bolk @bolknote.ru20.03.2008, 16:52 ответил skurudo.livejournal.com

Да, только что перезалил. Не понимаю что случилось с архивом, можно качать.

Мне тут пришла мысль на тему маркировки «ты»-«вы», надо будет реализовать :) Просто забываю с кем на «ты», а с кем на «вы» :)

#28 skurudo.livejournal.com 20.03.2008, 16:58 ответил bolknote.ru

Гм, что-то, и правда, не то с архивом. Пишет о том, что архив поврежден.

#29 bolk @bolknote.ru20.03.2008, 17:02 ответил skurudo.livejournal.com

Ещё раз скачай, сейчас всё ок. Если качаешь «Оперой», то зайди в закачки и выбери «скачать ещё раз» («restart transfer»). Оно кеширует, похоже.

#30 teplorod.livejournal.com 20.03.2008, 17:08 ответил bolknote.ru

Спасибо.

#31 alick @alick.ru20.03.2008, 17:43 ответил bolknote.ru

Ага. Пашет.
Спасибо.

#32 alick @alick.ru20.03.2008, 17:46

Кстати, а способы установки остались точно такими же, как у Димы? Просто readme в архиве не нашлось.

#33 alick @alick.ru20.03.2008, 17:59

И как-то оно странно реагирует на файл data/sites.txt:

Notice: Undefined variable: this in /stat/index.php on line 76

#34 bolk @bolknote.ru20.03.2008, 18:06 ответил alick.ru

Способ установки я написал в своём посте.

Гм. А это какая-то ошибка, там не может быть $this.

#35 alick @alick.ru20.03.2008, 18:08 ответил bolknote.ru

"Способ установки я написал в своём посте."
ты про это?
"Инструкция по установке: полностью удаляете «Спесту», ставите в ту же папку «Спесту 2», скрипт должен иметь возможность писать в папки data и reports."

А как быть, если спесты раньше не было?

#36 bolk @bolknote.ru20.03.2008, 18:13 ответил alick.ru

Щас допишу. Файл можно скачать заново — надеюсь, я правильно догадался что происходит в том куске кода, файл поправил.

#37 alick @alick.ru20.03.2008, 18:20 ответил bolknote.ru

Ошибка исчезла, но ссылки он все-равно криво поставил.
Там формат файла, если не помнишь:
Название1|Урля1
Название2|Урля2
Название3­|Урля3

А он генерит:
<a href='Название1|Урля1'>Название1|Урля1</a> | <a href='Название2|Урля2'>Название2|Урля2</a> | <a href='Название3|Урля3'>Название3|Урля3</a>

Т.е. забывает про разделитель.

#38 bolk @bolknote.ru20.03.2008, 18:24 ответил alick.ru

Инструкцию дописал.

Я не то что не помню, я этого не знаю, никогда этим не пользовался :) А эта фиговина, похоже, имеет свой формат. Впрочем, я уже поправил — сделал поддержку обоих форматов, можно качать заново.

#39 alick @alick.ru20.03.2008, 18:31 ответил bolknote.ru

<a href='$site$link'><b>$name</b></a> - вот эта штука никогда не срабатывает

#40 bolk @bolknote.ru20.03.2008, 18:39 ответил alick.ru

Как нет? Только что вписал:

Bolknote|bolknote.ru
Другой сайт|bolk.exler.ru

Сработало.

#41 alick @alick.ru20.03.2008, 18:42 ответил bolknote.ru

у меня не срабатывает проверка на strtolower($site) == $current_site

#42 alick @alick.ru20.03.2008, 18:43 ответил bolknote.ru

т.е. у меня там всегда false

#43 bolk @bolknote.ru20.03.2008, 18:53 ответил alick.ru

давайте в аську, утомительно. 2993333

#44 404team.org 20.03.2008, 20:26 ответил bolknote.ru

странная фигня. на локальном компе пашет, на серваке не пускает в админку.
в чем может быть прикол?

#45 bolk @bolknote.ru20.03.2008, 20:27 ответил 404team.org

Подробнее. Что именно происходит?

#46 404team.org 20.03.2008, 20:40 ответил bolknote.ru

просто не пускает, как при неправильном вводе пароля.

#47 bolk @bolknote.ru20.03.2008, 20:43 ответил 404team.org

PHP установлен как модуль? Или как CGI?

#48 404team.org 20.03.2008, 20:49 ответил bolknote.ru

как CGI.
проверил на другом хосте, где стоит как модуль - то же самое.

#49 bolk @bolknote.ru20.03.2008, 20:51 ответил 404team.org

Попробуйте выкачать ещё раз, я сделал небольшие правки на случай, если у вас PHP в режиме CGI.

#50 bolk @bolknote.ru20.03.2008, 20:57 ответил 404team.org

4ert, russkij otvalilsja v windows.

poprobujte posmotret' 4to u vas v $_SERVER. V file 'auth.inc.php' dobav'te persuju stroku:

echo '<pre>'; var_dump($_SERVER);

potom posmotrite, est' li u vas tam peremennyi PHP_AUTH_USER i PHP_AUTH_USER. elsi net — posmotrite chto est'. Esli 4to — zavtra v as'ke mozhno otladit'.

#51 404team.org 20.03.2008, 21:11 ответил bolknote.ru

большое спасибо. заработало!

#52 acerbial @coprophagous.ru20.03.2008, 21:31

Украли проект!!!

#53 no-subject @no-subject.ya.ru20.03.2008, 22:13

Поставил, работает как часы. Спасибо!

#54 cfyz.livejournal.com 20.03.2008, 22:51

А сколько весит архив? Перекачиваю уже 100й раз (размер всегда 22076) - все время неожиданный конец архива :/

#55 alick @alick.ru21.03.2008, 00:42

Написал в аську небольшой багрепорт.

#56 splurov.livejournal.com 21.03.2008, 07:44 ответил alick.ru

> у меня не срабатывает проверка на strtolower($site) == $current_site
http://php.net/setlocale в помощь

#57 splurov.livejournal.com 21.03.2008, 07:55 ответил alick.ru

Извиняюсь, последний комментарий не читайте, не проснулся ещё :-/

#58 alick @alick.ru21.03.2008, 09:40 ответил splurov.livejournal.com

Угу, баг исправили и он был совсем не в том.
Доброго вам утречка :-)

#59 bolk @bolknote.ru21.03.2008, 12:06 ответил cfyz.livejournal.com

Не понимаю что это за проблема такая, но иногда, после заливки на FTP архив оказывается битым. Перезалил.

#60 bolk @bolknote.ru21.03.2008, 12:14 ответил coprophagous.ru

Жди «Блоговара 2» с моими патчами ;)

#61 no-subject @openid.yandex.ru/users/no-subject21.03.2008, 15:58

Что-то странное, среди используемых браузеров нет ни одного IE.
Это только у меня такое?

#62 bolk @bolknote.ru21.03.2008, 16:02

Попробовал зайти локально MSIE, увидел: «Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; WebMoney Advisor; .NET CLR 2.0.50727)»

Так что всё должно работать.

#63 doctor-estet @kvisaz.ru23.03.2008, 11:29

Для HTML страниц и WAP/WML страниц также работает способ вставки через IMG

пример
img src=http://site.ru/stats/counter.php

#64 doctor-estet @kvisaz.ru23.03.2008, 19:06

Предыдущее сообщение несколько неверно.
Работать работает, но с некоторыми ошибками (в частности неправильно показываются страницы)

#65 teplorod.livejournal.com 23.03.2008, 20:03 ответил bolknote.ru

У меня ощущение, что вот этот способ
&lt;!--#include virtual='/каталог со спестой/counter.php' --&gt;
не вполне работает.
У меня раньше на одном из сайтов SpeSta ставилась через вот такой код:
&lt;script language="javascript"&gt;
r=""+Math.random()+"&ref­="+escape(document.referrer)+"&pg="+
escape(window­.location.href);
document.write("&lt;img src='http://psyberlink.flogiston.ru…unter.php?id="+
r+"' border=0 width=1 height=1 alt=SpeSta&gt;")&lt;/script&gt;

Можно ли вызывать систему статистики как-то похожим на это способом?

#66 teplorod.livejournal.com 23.03.2008, 20:04 ответил bolknote.ru

сорри, не знал, что html-теги совсем не отображаются.

#67 bolk @bolknote.ru24.03.2008, 14:33 ответил teplorod.livejournal.com

Не вполне — это как? Что конктретно не работает?

#68 teplorod.livejournal.com 02.04.2008, 01:04

&lt; у тебя в комментариях не работает, а я хотел код вызова обсудить.

#69 bolk @bolknote.ru02.04.2008, 15:03 ответил teplorod.livejournal.com

Как это не работает? Работает «&lt;» и «<» показывает равно то, что ты написал — сочетание знаков «&lt;» и «<».

#70 ulrith.livejournal.com 04.12.2008, 16:58

Что-то у меня старая спеста с 09.10.2008 перестала правильно считать статистику. Это можно видеть вот здесь: http://eduabroad.ru/stat/?mont…8&l=demo&p=demo
А ведь столько лет прослужила верой-правдой (вот сколько: http://eduabroad.ru/stat/?month=06.2003). Что делать, чинить ниасилил, надо ставить новьё. В связи с этим 2 вопроса им один крик боли. Вопросы: 1) у меня тут вот на главстраницо (http://eduabroad.ru/) внизу вылезли всякие данные - как их отключить? В конфиге не нашел. 2) А можно вызвать без php и иклюдов? Способ с Яваскриптом или однопиксельной картинкой не прокатит? (<img src="http://eduabroad.ru/stat/counter.php" border=0 width=1 height=1 alt="SpeSta">) Крик боли: верните статистику кликоф!

#71 ulrith.livejournal.com 06.12.2008, 14:13

А што - тут никого нет? :-0

#72 bolk @bolknote.ru06.12.2008, 18:25 ответил ulrith.livejournal.com

Есть. Но мне пока не до «Спесты».

1) не увидел ничего внизу
2) по поводу других способов не знаю, посмотрите на сайте первых разработчиков Spesta2.

Статистики кликов в «Спесте2» не было никогда.

#73 ulrith.livejournal.com 07.12.2008, 17:34

Сорри за анноинг, бат...

1) Внизу выдаёццо: "IP: 89.207.222.46 (091f412984b82451808b7d64aef2eb06)
Host: eduabroad.ru
Agent: Mozilla/5.0 (X11; U; Linux i686; ru; rv:1.9.0.4) Gecko/2008111317 Ubuntu/8.04 (hardy) Firefox/3.0.4
Request: /
Referer: bolknote.ru/2008/03/20/~1631"

2) Понял.

Статистика кликов в старой спесте:
http://eduabroad.ru/stat/?report=l&l=demo&p=demo

#74 ulrith.livejournal.com 07.12.2008, 17:40

А, понял. В Спесте2 - да, не было. А жаль!

#75 bolk @bolknote.ru07.12.2008, 20:31 ответил ulrith.livejournal.com

Гм… ничего не понимаю. Никогда такого не видел. А место в коде, где это происходит, вы не нашли?

#76 ulrith.livejournal.com 07.12.2008, 21:37

Не-а, не нашёл. Думал так и должно быть для отладки, но отключение соотв. параметра в конфиге ничего не даёт.

#77 bolk @bolknote.ru08.12.2008, 10:06 ответил ulrith.livejournal.com

Будет время, попробую поковырять.

#78 ulrith.livejournal.com 11.12.2008, 16:29

Думаю эта штука вылазит потому что я прописал в конфиге свой домашний ip. Как Вам версия?

#79 bolk @bolknote.ru12.12.2008, 14:20 ответил ulrith.livejournal.com

Никак :) Куда вы его записали?

#80 ulrith.livejournal.com 13.12.2008, 18:56

В конфиг. Что, непонятно? :-)

#81 bolk @bolknote.ru14.12.2008, 14:04 ответил ulrith.livejournal.com

Не пронятно, ага.

#82 ulrith.livejournal.com 20.12.2008, 19:48

В конфиг.инк.пхп я прописал:
# База своих ip-адресов, что бы не учитывать их

$cfg['stat']['ip'] = array();

$cfg['stat']['ip'][] = "127.0.0.1";
$cfg['stat']['ip'][] = "мой айпи";


И вот поэтому оно мне все это и показывает. Вам ведь этого не видно? Или Вам тоже видно?

#83 bolk @bolknote.ru21.12.2008, 00:59 ответил ulrith.livejournal.com

Мне этого не видно.

#84 ulrith.livejournal.com 21.12.2008, 17:33

Вот! (Торжествуя.) Значиццо оно показывает всю эту фегню только для меня, когда я захожу со своего айпи-адреса. Фух. :-)

#85 bolk @bolknote.ru21.12.2008, 21:22 ответил ulrith.livejournal.com

А, ну может быть, видимо это фича :)

#86 Stranger @artconcepts.ru19.01.2009, 20:16

Там в counter.inc.php есть проверка, и если ip совпадает с конфигом, то выводится эта инфа, если нет, то плюсуется статистика

#87 bolk @bolknote.ru19.01.2009, 23:59 ответил artconcepts.ru

Значит это какая-то фича, я не в курсе, я же только патчил баги и дописал функционал, но не являюсь родителем этой версии.

#88 Stranger @artconcepts.ru20.01.2009, 21:38

я щас написал себе свою статистику, но уже на базах....

и что самое обидное, на локалхосте работает так же, а на сервере уже где то в 10 раз медленнее. например 0.007 спеста а у меня 0.07. причем если спеста стабильно, то у меня может и 0.5 вылезти...

Всё из-за баз, поскольку алгоритм похожий, тормозят именно запросы. Не знаешь где про оптимизацию запросов почитать?

#89 bolk @bolknote.ru21.01.2009, 10:15 ответил artconcepts.ru

Если MySQL, то тут: http://www.mysqlperformanceblog.com/

#90 Stranger @artconcepts.ru22.01.2009, 02:50

Спасибо, почитаю ;)

#91 foxter.livejournal.com 04.03.2009, 13:07

Спасибо огромное. Ваша версия (дополнение, аддон) единственная которая у меня заработала!
Спасибо!

#92 bolk @bolknote.ru10.03.2009, 12:13 ответил foxter.livejournal.com

Ну, от совершенства она далека, а допиливать уже не хочется :)
Ваше имя или адрес блога:

Текст комментария (для гиков: не HTML, а текст!)


Кому бы вы хотели ответить (или кликните на его аватару)


Евгений Степанищев (imbolk@gmail.com)
t=0.094