Здравствуйте.
На сайте есть стандартная выборка views по просмотрам "за сегодня".
В середине дня по московскому времени она, почему-то обнуляется.
В настройках сайта, в качестве региона и часового пояса стоят: Россия и Москва.
Время на сервере, на котором расположен сайт, отличается от московского. Подозреваю что views, работает по времени сервера...
Подскажите, как решается эта проблема?
Комментарии
Вряд ли это время сервера. У меня на сервере нормальное время, а обновляется тоже черт знает когда :/
http://drupal.org/node/521858
Насколько я поняла, не очень хорошо прописан в модуле Statistics сброс просмотров за день. Вероятно вы можете немножко подровнять, когда он у вас должен сбрасываться, установив в
variable_set('statistics_day_timestamp', strtotime('midnight'));
kalabro, это же вроде для 8-го друпала, лично у меня 6. У автора темы 7. Видимо это вообще что-то друпало- генетическое. И если честно я так и не понял что где править
а может и правда сервак виноват, у меня обнуление в 15:00
============================================
Уточнил у хостера, время на сервере правильное, так что дело точно не в сервере
а чем совет kalabro не устроил ?
не разобрался что на что менять и непонятно вообще то ли это решение
/devel/php
вбиваете код — он выполняется. эффект почувствуете через день
в папке модуля statistics лежит файл statistics.module ,там есть ф-ция
function statistics_cron() ,в которой и ресетится счетчик -экспериментируй.
Прямо слёт экстрасенсов.
А начать с запроса, который генерирует вьюс не вариант?
Тогда сразу видно будет, статистика это или лунное затмение
Вот код:
<?php/**
* Implementation of hook_cron().
*/
function statistics_cron() {
$statistics_timestamp = variable_get('statistics_day_timestamp', '');
if ((time() - $statistics_timestamp) >= 86400) {
// Reset day counts.
db_query('UPDATE {node_counter} SET daycount = 0');
variable_set('statistics_day_timestamp', time());
}
// Clean up expired access logs.
if (variable_get('statistics_flush_accesslog_timer', 259200) > 0) {
db_query('DELETE FROM {accesslog} WHERE timestamp < %d', time() - variable_get('statistics_flush_accesslog_timer', 259200));
}
}?>
Как с этим можно экспериментировать?
Этот что ли?
node.created AS node_created,
node.title AS node_title,
node.language AS node_language,
users.name AS users_name,
users.uid AS users_uid,
history_user.timestamp AS history_user_timestamp,
node.changed AS node_changed,
node_comment_statistics.last_comment_timestamp AS node_comment_statistics_last_comment_timestamp,
node_counter.daycount AS node_counter_daycount
FROM dr_node node
LEFT JOIN dr_node_counter node_counter ON node.nid = node_counter.nid
INNER JOIN dr_users users ON node.uid = users.uid
LEFT JOIN dr_history history_user ON node.nid = history_user.nid AND history_user.uid = ***CURRENT_USER***
INNER JOIN dr_node_comment_statistics node_comment_statistics ON node.nid = node_comment_statistics.nid
WHERE (node.status <> 0) AND (node_counter.totalcount > 0) AND (node.type IN ('story'))
ORDER BY node_counter_daycount DESC
Не этот.
Kompas, Drupby, RxB спасибо за ответы.
Kalabro, вам особое спасибо. Кажется, суть проблемы начинаю понимать. Место где искать - вы тоже указали. В ближайшие дни - буду пробовать.
Что поделать - не программисты мы
Методом экспериментов, проб и ошибок - учимся!
Удачи)
Мне эксперименты не помогли
Kompas, у меня все работает!
Делаете все в точности как сказала Kalabro. Т.е. в файле statistics.module ищете и заменяете указанные строки. Устанавливаете запуск cron-a с интервалом в 1 час.
И в течении одного часа после полуночи, статистика обязательно сбрасывается. Минуты могут варьироваться, но это не так важно.
Спасибо Kalabro!