![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
pmy |
|
|||
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 2.10.2006 Репутация: нет Всего: нет |
Помогите разобраться!
Написал модуль сбора и вывода информации о посещениях сайта. Но периодически(!!!) модуль (точнее одна из частей) выводит неправдоподобную информацию. Помогите разобраться. Для реализации той части модуля, которая периодически работает неправильно ![]() Алгоритм очень простой. Если пользователь, зашедший на сайт, ранее не был на нем (т.е. на его машине нет куки), я сохраняю на его машине 2 переменные куки: date и count. В переменной date хранится текущая дата в формате dd-mm-yy, а в переменной count кол-во просмотров страниц сайта у данного пользователя. ИСХОДЯ ИЗ ЭТОГО - в базе данных увеличиваю на 1 общее кол-во посетителей и кол-во новых (ранее не заходивших на сайт посетителей). Если пользователь зашел на сайт и у него есть куки, я проверяю их значения. Если значение переменной date совпадает с текущей датой, то в базе данных общее кол-во посетителей за сегодняшний день и кол-во новых посетителей остаётся без изменений. Если значение переменной date не совпадает с текущей датой- значит сегодня этого посетителя на сайте ещё не было. Соответственно в базе данных общее кол-во посетителей за сегодняшний день увеличиваем на 1, а кол-во новых посетителей оставляем без изменений. Значение переменной date меняем на текущую дату. В чем ошибка: Модуль статистики на сайте я запустил сегодня. При помощи phpmyadmin я смотрю содержимое таблицы базы данных. И вижу: общее кол-во посетителей 25, кол-во новых посетителей тоже 25. Обновляю страницу и через несколько секунд значения уже 79 и 79 соответственно. Хотя я знаю, что такого кол-ва посетителей не было (есть ещё другой источник статистики) за этот промежуток времени. Перепроверял свой код- ну не может мой код добавлять в базу данных такую информацию. Или может я чего не вижу и не допонимаю. И ЧТО САМОЕ ИНТЕРЕСНОЕ!!!!!!!!! После этого, спустя некоторое время, информация меналась достаточно правдоподобно и соответствовала действительности. Т.е. ошибка видимо имеет периодический характер. P.S. сайт лежит на сервере организации. Т.е. свой хостинг. К базе данных доступ есть у сисадмина... но это может и не важно ![]() Запись в таблице базы данных имеет следующий вид: ********************** id (например 1) day (например 15) month (например 04) year (например 08) kol_pos (например 21) kol_newpos (например 7) ********************** Вот код этой части модуля, в которой происходит "анализ" куки и запись информации в базу данных:
|
|||
|
||||
Feldmarschall |
|
|||
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 22 Всего: 32 |
поисковые роботы.
при чем здесь код? |
|||
|
||||
admhome |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 10.7.2006 Где: заМКАДье Репутация: нет Всего: нет |
может просто мускул через определённый промежуток времени записывает данные из памяти на хард, и поэтому только через какое-то время информация обновляется
|
|||
|
||||
Feldmarschall |
|
|||
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 22 Всего: 32 |
admhome, у тебя несколько анекдотичные представления о работе баз данных
|
|||
|
||||
Fortop |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2200 Регистрация: 13.11.2007 Где: Донецк Репутация: 20 Всего: 42 |
admhome, добавляй в базу еще немного информации о пришедшем пользователе. Тогда тебе будет понятнее, кто и откуда накрутил счетчик.
-------------------- Мир это Я. Живее всех живых. |
|||
|
||||
pmy |
|
|||
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 2.10.2006 Репутация: нет Всего: нет |
Так.
Сегодня посмотрел статистику и сделал вывод - робот ходил. А так как куки он не принимает, поэтому и такое большое ![]() Я думаю вставлю в код блок небольшой, в котором вычисляется робот это или нет и устанавливается соответствующий флаг, а далее запросы к базе данных будут выполняться или не выполняться в зависимости от флага. Только вопрос по каким пар-рам или данным можно определить, робот это или нет. Можно ли по IP узнать? Это сообщение отредактировал(а) pmy - 16.4.2008, 08:40 |
|||
|
||||
Feldmarschall |
|
|||
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 22 Всего: 32 |
большинство роботов можно отличить по user agent-у
у тебя есть два пути - поискать в интернете список. либо составить самостоятельно. для этого писать в лог все встретившиеся агенты, и руками их просматривать. выделять то, что явно робот, находить в нем ключевую строку (к примеру yandex или yahoo) И добавлять в список проверки. а по поводу твоего первого вопроса... понимаешь, не ищут так ошибки в коде - вываливая его на форум. это и бессмысленно и невозможно. ошибки ищут путем отладки. А для отладки нужно две вещи, которых по определению не может быть на форуме: 1. Та же самая система, на которой код работает неправильно. 2. Понимание того, что этот код делает. Построчно. Ничего этого у посетителей форума нет и быть не может. Ошибку может найти только сам программист. В твоем случае - записывая максимум отладочной информации в лог-файл. если бы ты записывал хотя бы дату и время, то убедился бы, что это реальные посетители, а не ошибки счетчика. Добавлено через 2 минуты и 41 секунду Кстати, именно по этой причине использовать куки для определения посетителей нельзя. Используй IP адрес. Так у тебя статистика станет гораздо ближе к реальности, даже с роботами. |
|||
|
||||
pmy |
|
|||
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 2.10.2006 Репутация: нет Всего: нет |
Я отлаживал и построчно просматривал код. Ошибки быть не могло. Поэтому и залез на форум - ну мало ли что. Сегодня выяснил, что действительно робот заходит на сайт. При чем он просмотрел сегодня порядка 90 страниц сайта. Теперь при помощи $_SERVER[юзер агент] вычислю роботов. А по поводу того, что нужно по IP учитывать посетителей- не согласен. Раньше учитывал, но теперь решил куками учитывать. Потому что я дома включаю компьютер и захожу на сайт - у меня один IP. Выключаю и снова включаю - IP уже другой. Захожу на сайт - и получается, что зашло 2 разных посетителя. Поэтому куки. Они конечно могут быть отключены, но всё же статистика поточнее получается.
|
|||
|
||||
Feldmarschall |
|
|||
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 22 Всего: 32 |
хехех. неважно, что ты делал. важно какой результат получил. это в школе можно сказать занудной директрисе - "я учил!". Это ведь ей нужны твои знания, правда? а во взорослой жизни можно сколько угодно говорить "я учил", "я отлаживал", "я искал", но проблема в том, что результат нужен не какой-то тёте, а самому себе. хехех. построчно просматривать код - самое дурацкое занятие, какое только мождно вообразить для поиска ошибок. отладка и "просмотр кода построчно" - это разные вещи. И здесь у тебя все наперекосяк. Своими глазами видишь реальный факт: с куками точность вообще никакая! Но утверждаешь, будто оно лучше. Кто тебе сказал, что лучше? Один посетитель с отключенными куками загадит тебе всю статистику. В то время, как количество хостов, как нетрудно убедиться, не отличается больше, на 5-10% от количества "посетителей" в "других источниках статистики". И алгоритмы, которые там используются - далеко не такие простые, как ты думал - поставил куку, и все посчитал! Учитывая же, что точность таких систем тоже колеблется в тех же пределах, то и вовсе говорить не о чем. Пока ты не очень хорошо понимаешь механизм работы веб-сервера - считай IP адреса. Да и когда будешь хорошо разбираться - тоже не будет смысла считать другое. |
|||
|
||||
Feldmarschall |
|
|||
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 22 Всего: 32 |
Пример, который я уже устал приводить
скроллим страницу вниз. видим счетчик mail.ru кликаем по нему. смотрим строчку 4. Форум программистов Vingrad (международный) поднимаем глаза к названиям колонок: Посетителей: 7,144 Хостов: 7,142 получаем разницу, делим её на одну из цифр и умножаем на сто: 0,028. три десятых процента. разницы между хостами и посетителями. Ну ладно, такой момент попался. разница в 2 единицы. но посмотрим другие сайты рядом. Ну - сотня на несколько тыщ. Полтора процента. Судя по этим цифрам, в реальной жизни пользователи интернета видимо занимаются еще чем-то, кроме ежесекундного выдергивания провода из модема. |
|||
|
||||
pmy |
|
|||
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 2.10.2006 Репутация: нет Всего: нет |
А я и получил результат. Теперь статистика работает более-менее корректно. В дополнение мой модуль статистики показывает топ20 самых просматриваемых страниц и ещё полезную информацию. Гараздо удобнее чем мэиловские счетчики. p.s. Вы, уважаемый, любите разводить диалоги ни о чем. При чем тут школа и учителя? ![]() ![]() |
|||
|
||||
Fortop |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2200 Регистрация: 13.11.2007 Где: Донецк Репутация: 20 Всего: 42 |
При том что Вас не устраивал "результат" и Вы обратились за помощью. Когда указали на Ваши ошибки - пошел детский лепет в виде оправданий. Ваши оправдания я получил результат и это работает - тут никому не нужны это не школа. Сделав счетчик с предпосылкой "лишь бы был результат" и не понимая как и почему оно работает - Вы сами себя наказываете. -------------------- Мир это Я. Живее всех живых. |
|||
|
||||
pmy |
|
|||
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 2.10.2006 Репутация: нет Всего: нет |
Кто нашел хоть одну ошибку? Оправданий нет никаких! Не Вы мне ставили задачу и не за что мне перед вами оправдываться. Ваш вывод - "лишь бы был результат" необоснован. Тогда о чем Вы? И вобще в предыдущем сообщении я обращался не к вам. Так что - молчим... ![]() Это сообщение отредактировал(а) pmy - 16.4.2008, 15:32 |
|||
|
||||
Feldmarschall |
|
|||
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 22 Всего: 32 |
pmy, я думаю, что ты не модератор этого форума.
Так что не надо никому затыкать рот. Никакого результата ты не получил. Ты пришел на форум, где тебе результат принесли на блюдечке с голубой каемочкой. Это если говорить о твоей ошибке. Если говорить статистике, то ты рано радуешься. Когда ты только написал свою статистику, ты тоже думал, что она работает =) И если ты не понял, о чем говорят уважаемые люди, то не стоит это афишировать ;-) |
|||
|
||||
pmy |
|
|||
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 2.10.2006 Репутация: нет Всего: нет |
Всё понял. Уважааааааааемые люди!
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "PHP" | |
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |