Перейти к содержимому

Реферальная программа Мегаплана


  • Закрытая тема Тема закрыта

Статистика переходов по внешней ссылке

#1 1putnik

1putnik
  • Пользователь
  • 96 сообщений
  • Репутация: 8
0

Отправлено 27 Ноябрь 2012 - 23:44

Всем здравствуйте!
Помогите, пожалуйста, решить проблему:
Есть сайт и на нем не правильно ведется статистика переходов по внешней ссылке. В базе данных есть три столбца: "сегодня", "вчера" и "всего". Записывается только в столбцы "сегодня" и "всего", причем они всегда имеют одинаковые значения, а столбец "вчера" всегда - 0.
В чем может быть проблема в PHP-коде или базе MySQL ?
Привожу кусок кода для обновления статистики, может здесь что не так:

mysql_query("UPDATE adfsr SET clx = clx + 1, allclx = allclx + 1, sum = sum + ".$price.", allsum = allsum + ".$price.", ctr = ".$ctr." WHERE id = ".$sid." LIMIT 1");

clx - переходов сегодня
clx_yday - переходов вчера
allclx - переходов всего

 

 

  • 0

#2 yury

yury
  • Пользователь
  • 629 сообщений
  • Репутация: 176

Отправлено 28 Ноябрь 2012 - 11:53

1putnik,
из вашего вопроса не очень понятно как называются у вас поля "сегодня", "вчера" и "всего".

* Подключаем телепатию и недюжинные познания английского

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

`clx` int(1) NOT NULL DEFAULT '0',
`clx_yday` int(1) NOT NULL DEFAULT '0',
`allclx` int(50) NOT NULL DEFAULT '0',

Далее рассматриваем ваши запросы к БД и обнаруживаем, что упоминаются только два из них и только тут:

mysql_query("UPDATE advert_tizer SET clx = clx + 1, allclx = allclx + 1, sum = sum + ".$price.", allsum = allsum + ".$price.", ctr = ".$ctr." WHERE id = ".$sid." LIMIT 1");

Т.е. происходит одновременное и безусловное (нет никакой проверки сегодняшние данные мы обновляем или нет) увеличение на единицу полей "сегодня" и "всего" (clx и allclx).
Потому нет ничего удивительного что у вас "сегодня" и "всего" одинаковые.
А поле clx_yday ("вчера") вообще нигде не меняется.
Потому нет ничего удивительного, что у вас "вчера" все время равно нулю.

* Отключаем телепатию и недюжинные познания английского

PS вы подправили свой вопрос и теперь стало понятнее, что телепатия сработала. Поэтому ответ остается прежним.


  • 1

#3 1putnik

1putnik
    Topic Starter
  • Пользователь
  • 96 сообщений
  • Репутация: 8

Отправлено 28 Ноябрь 2012 - 12:07

происходит одновременное и безусловное (нет никакой проверки сегодняшние данные мы обновляем или нет) увеличение на единицу полей "сегодня" и "всего" (clx и allclx).
Потому нет ничего удивительного что у вас "сегодня" и "всего" одинаковые.
А поле clx_yday ("вчера") вообще нигде не меняется.
Потому нет ничего удивительного, что у вас "вчера" все время равно нулю.

* Отключаем телепатию и недюжинные познания английского

Ну это понятно. Я просто думал есть какие-то настройки в phpMyAdmin.
yury, может быть подскажите как это реализовать, чтобы clx - обнулялось в 24:00, clx_yday - принимало значение clx в 24:00
Вернее сначало clx_yday - принимало значение clx в 24:00, а затем сразу clx - обнулялось
  • 0

#4 yury

yury
  • Пользователь
  • 629 сообщений
  • Репутация: 176

Отправлено 28 Ноябрь 2012 - 13:22

Ну это понятно. Я просто думал есть какие-то настройки в phpMyAdmin. yury, может быть подскажите как это реализовать, чтобы clx - обнулялось в 24:00, clx_yday - принимало значение clx в 24:00

ОК.
Если это понятно, то следующий момент для понимания это то, что обнулять clx и менять значение clx_yday надо не в 24:00, а
* надо где-то хранить дату, которая соответствует понятию "сегодня" при предыдущем обновлении БД.
* при добавлении очередного перехода по внешней ссылке в базу, надо сверяться совпадает ли это значение с текущей датой и в случае не совпадения выполнять соответствующие переприсваивания (clx_yday = clx и обнуление clx) и после этого обновить значение хранимой даты (см предыдущий пункт).
  • 0

#5 1putnik

1putnik
    Topic Starter
  • Пользователь
  • 96 сообщений
  • Репутация: 8

Отправлено 28 Ноябрь 2012 - 17:07

надо где-то хранить дату, которая соответствует понятию "сегодня" при предыдущем обновлении БД.

Поле clx - это и есть сегодня, только оно совпадает с показаниями поля всего (allclx), так как не обнуляется с наступлением новых суток.

при добавлении очередного перехода по внешней ссылке в базу, надо сверяться совпадает ли это значение с текущей датой и в случае не совпадения выполнять соответствующие переприсваивания (clx_yday = clx и обнуление clx) и после этого обновить значение хранимой даты

А просто переприсвоить ( clx_yday = clx ) с наступлением новых суток нельзя? А затем clx - обнулить?
Статистики по определенной дате на сайте нет, да и не нужно
  • 0

#6 yury

yury
  • Пользователь
  • 629 сообщений
  • Репутация: 176

Отправлено 28 Ноябрь 2012 - 18:12

Поле clx - это и есть сегодня, только оно совпадает с показаниями поля всего (allclx), так как не обнуляется с наступлением новых суток.

* поле "clx" у вас это количество переходов по внешней ссылке за "сегодня", а не дата.
* кто будет на сервере сидеть и караулить не наступили ли новые сутки? Есть конечно всякие примочки для запуска скриптов по расписанию, типа cron-а и jobs-ов, но не думаю, что в данном случае с ними надо заморачиваться, потому как это не просто все и не факт, что вас к этим вещам администратор сервера допустит.
* самый простой вариант это увидеть (не наступили ли новые сутки и не пора ли данные про "сегодня" перебросить во "вчера" и обнулять сегодняшний счетчик) — это при очередном увеличении счетчика и обновлении базы сравнить текущую дату и дату предыдущего обновления БД.
Для этого всего одно поле в БД потребуется добавить и все у вас получится.
  • 0

#7 1putnik

1putnik
    Topic Starter
  • Пользователь
  • 96 сообщений
  • Репутация: 8

Отправлено 28 Ноябрь 2012 - 18:24

самый простой вариант это увидеть (не наступили ли новые сутки и не пора ли данные про "сегодня" перебросить во "вчера" и обнулять сегодняшний счетчик) — это при очередном увеличении счетчика и обновлении базы сравнить текущую дату и дату предыдущего обновления БД.

Как это сделать?

Для этого всего одно поле в БД потребуется добавить

Какое поле нужно?
Увы я не програмист. Я редактирую PHP методом тыка.
  • 0

#8 1putnik

1putnik
    Topic Starter
  • Пользователь
  • 96 сообщений
  • Репутация: 8

Отправлено 29 Ноябрь 2012 - 11:54

Все, проблема решена

yury был прав на счет cron

В установке скрипта я упустил запуск планировщика cron, что было описано в инструкции.

Тема закрыта !
  • 0

robot

robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85


Оформление форума – IPBSkins.ru