Некорректная дата последнего посещения форума

Проблемы с установкой или работой phpBB 3.0.x? Получите помощь здесь!
С 1 января 2017 года phpBB Group прекращает поддержку phpBB версии 3.0.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.0 до 1 июля 2017 года.
Подробнее: Окончание поддержки phpBB 3.0.
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать моды

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Аватара пользователя
nissin
phpBB 3.0.4
Сообщения: 2229
Стаж: 18 лет 9 месяцев
Откуда: Астана
Благодарил (а): 7 раз
Поблагодарили: 344 раза

Re: Некорректная дата последнего посещения форума

Сообщение nissin »

Ну раз IP сменился и установлен контроль по IP, то естественно создаётся новая сессия.
А насчёт несрабатывания крона, я уже встречал подобную проблему, попробуйте вот так:
OPEN cron.php, FIND

Код: Выделить всё

$use_shutdown_function = (@function_exists('register_shutdown_function')) ? true : false;
ADD AFTER

Код: Выделить всё

$use_shutdown_function = false;
Если вкратце, на хостинге функция register_shutdown_function включена, но почему-то не работает, разбираться в причинах было лень, поэтому просто отключил. Если кому интересно, то это был VPS на агаве.

Насчёт продолжения сессии по истечении времени, возможно что каким-то образом срабатывает автологин.

Код: Выделить всё

						// Check the session length timeframe if autologin is not enabled.
						// Else check the autologin length... and also removing those having autologin enabled but no longer allowed board-wide.
						if (!$this->data['session_autologin'])
						{
							if ($this->data['session_time'] < $this->time_now - ($config['session_length'] + 60))
							{
								$session_expired = true;
							}
						}
						else if (!$config['allow_autologin'] || ($config['max_autologin_time'] && $this->data['session_time'] < $this->time_now - (86400 * (int) $config['max_autologin_time']) + 60))
						{
							$session_expired = true;
						}
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 19 лет 7 месяцев
Откуда: Калининград не Кенигсберг
Благодарил (а): 54 раза
Поблагодарили: 2756 раз

Re: Некорректная дата последнего посещения форума

Сообщение Sheer »

nissin писал(а):Ну раз IP сменился и установлен контроль по IP, то естественно создаётся новая сессия.
Об этом я уже и сам догадался.
на хостинге функция register_shutdown_function включена, но почему-то не работает
Вот тут вообще такой не нашел, или там и не найти?
Ну попробую отключить, посмотрим...
возможно что каким-то образом срабатывает автологин
Вот бы еще понять, а как?
Аватара пользователя
nissin
phpBB 3.0.4
Сообщения: 2229
Стаж: 18 лет 9 месяцев
Откуда: Астана
Благодарил (а): 7 раз
Поблагодарили: 344 раза

Re: Некорректная дата последнего посещения форума

Сообщение nissin »

http://php.net/manual/en/function.regis ... nction.php

По автологину, нужно проверить устанавливается ли session_autologin в таблице сессий.
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 19 лет 7 месяцев
Откуда: Калининград не Кенигсберг
Благодарил (а): 54 раза
Поблагодарили: 2756 раз

Re: Некорректная дата последнего посещения форума

Сообщение Sheer »

nissin писал(а):устанавливается ли session_autologin в таблице сессий.
Да, устанавливается, и это видно даже из той инфы, что собирает мой скриптик.
Аватара пользователя
nissin
phpBB 3.0.4
Сообщения: 2229
Стаж: 18 лет 9 месяцев
Откуда: Астана
Благодарил (а): 7 раз
Поблагодарили: 344 раза

Re: Некорректная дата последнего посещения форума

Сообщение nissin »

Не обратил внимания.
Ну это как раз означает, что найденная в БД сессия продолжается, несмотря на то что время сессии истекло.
В общем думаю, что починка крона должна решить проблемы с датой последнего посещения.

PS: анализ натолкнул на небольшой шанс получить неверную дату при следующем раскладе:
пользователь нажимает выход, но при этом в таблице сессий у него остаются старые сессии (например от другого IP). При автоматической чистке этих сессий информация о дате последнего посещения будет изменена на не совсем верную.
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 17272
Стаж: 20 лет 4 месяца
Откуда: Красноярск
Благодарил (а): 632 раза
Поблагодарили: 2412 раз

Re: Некорректная дата последнего посещения форума

Сообщение rxu »

nissin
Вероятно, это давно известный баг
http://tracker.phpbb.com/browse/PHPBB3-8274
http://tracker.phpbb.com/browse/PHPBB3-7479
Хотя такого раньше не описывалось
nissin писал(а):пользователь нажимает выход, но при этом в таблице сессий у него остаются старые сессии (например от другого IP). При автоматической чистке этих сессий информация о дате последнего посещения будет изменена на не совсем верную.
Возможно, имеет смысл запостить еще один тикет об этом.
Изображение
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 19 лет 7 месяцев
Откуда: Калининград не Кенигсберг
Благодарил (а): 54 раза
Поблагодарили: 2756 раз

Re: Некорректная дата последнего посещения форума

Сообщение Sheer »

nissin писал(а):пользователь нажимает выход
У меня в этом случае как раз-таки все оки-доки. Сессия килится и в таблицу _users в поле user_lastvisit записывается время нажатия кнопки "Выход".
ЗЫ. "Починка" cron проблему не решила. Сессии копятся. Дата последнего посещения не меняется, даже если сессии покилить в базе вручную. На локалке работает, на серваке - не хочет. Никаких идей, кроме как на входе (в функции login_box()) принудительно убивать предыдущие сессии и менять время последнего посещения, у меня нет.

FIND

Код: Выделить всё

// The result parameter is always an array, holding the relevant information...
        if ($result['status'] == LOGIN_SUCCESS)
        { 
AFTER ADD

Код: Выделить всё

            $sql = 'SELECT user_id FROM '.USERS_TABLE.' WHERE username = \''.$username.'\' ';
            $result = $db->sql_query($sql);
               $row = $db->sql_fetchrow($result);
            $uid = $row['user_id'];
            if ($uid)   // Id пользователя обнаружен
            {
                $sql = 'SELECT MAX(session_time) as last FROM '.SESSIONS_TABLE.' WHERE session_user_id = '.$uid.' AND session_autologin != 1 ORDER BY session_time DESC';
                $result = $db->sql_query($sql);
                   $row = $db->sql_fetchrow($result);
                $last_login = $row['last'];
                if ($last_login) // Есть записи в таблице сессий
                {
                    $sql = 'UPDATE '.USERS_TABLE.' SET user_lastvisit = \''.$last_login.'\' WHERE user_id = '.$uid.''; // Изменяем дату последнего посещения
                    $result = $db->sql_query($sql);
                    $current_time = time() - 60;
                    $sql = 'DELETE FROM '.SESSIONS_TABLE.' WHERE session_user_id = '.$uid.' AND session_time < '.$current_time.''; // Удаляем все предыдущие сессии

                    $db->sql_query($sql);
                }
            } 
Автологин в стадии разработки, сделаю - расскажу.
Аватара пользователя
nissin
phpBB 3.0.4
Сообщения: 2229
Стаж: 18 лет 9 месяцев
Откуда: Астана
Благодарил (а): 7 раз
Поблагодарили: 344 раза

Re: Некорректная дата последнего посещения форума

Сообщение nissin »

Попробуйте запустить:
http://www.aquaforum.lv/cron.php?cron_type=tidy_sessions
Будут ли чиститься сессии в этом случае?

Но крон нужно в любом случае исправлять, там помимо чистки сессий ещё много других вещей делается (отправка сообщений из очереди, чистка кэша, снятие предупреждений и т.д.).

Добавлено спустя 2 минуты 15 секунд:
rxu
Если чистка сессий по крону нормально работает, то разница составит не более одного часа, что я думаю не сильно существенно.
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 19 лет 7 месяцев
Откуда: Калининград не Кенигсберг
Благодарил (а): 54 раза
Поблагодарили: 2756 раз

Re: Некорректная дата последнего посещения форума

Сообщение Sheer »

Похоже крон не пашет... Вот бы еще понять почему?
Аватара пользователя
nissin
phpBB 3.0.4
Сообщения: 2229
Стаж: 18 лет 9 месяцев
Откуда: Астана
Благодарил (а): 7 раз
Поблагодарили: 344 раза

Re: Некорректная дата последнего посещения форума

Сообщение nissin »

Для начала проверить $config['cron_lock'], должно быть равно нулю.
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 19 лет 7 месяцев
Откуда: Калининград не Кенигсберг
Благодарил (а): 54 раза
Поблагодарили: 2756 раз

Re: Некорректная дата последнего посещения форума

Сообщение Sheer »

И я об этом подумал, и с чего бы ему быть 1? Не менял же. Все ок, равен нулю. А не пашет...
Аватара пользователя
nissin
phpBB 3.0.4
Сообщения: 2229
Стаж: 18 лет 9 месяцев
Откуда: Астана
Благодарил (а): 7 раз
Поблагодарили: 344 раза

Re: Некорректная дата последнего посещения форума

Сообщение nissin »

Посмотреть:
$config['last_queue_run']
$config['cache_last_gc']
$config['warnings_last_gc']
$config['database_last_gc']
$config['search_last_gc']
$config['session_last_gc']

Ну и на всякий случай:
$config['queue_interval']
$config['cache_gc']
$config['warnings_gc']
$config['database_gc']
$config['search_gc']
$config['session_gc']
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 19 лет 7 месяцев
Откуда: Калининград не Кенигсберг
Благодарил (а): 54 раза
Поблагодарили: 2756 раз

Re: Некорректная дата последнего посещения форума

Сообщение Sheer »

$config['last_queue_run'] = 1287319904 (Sun, 17 Oct 2010 12:51:44 GMT)
$config['cache_last_gc'] = 1355307122 (Wed, 12 Dec 2012 10:12:02 GMT)
$config['warnings_last_gc'] = 1355307124 (Wed, 12 Dec 2012 10:12:04 GMT)
$config['database_last_gc'] = 1355307127 (Wed, 12 Dec 2012 10:12:07 GMT)
$config['search_last_gc'] = 1355307128 (Wed, 12 Dec 2012 10:12:08 GMT)
$config['session_last_gc'] = 1355307166 (Wed, 12 Dec 2012 10:12:46 GMT)

Как я понимаю, через два года и более после последнего запуска крон? Почему?

$config['queue_interval'] = 600
$config['cache_gc'] = 7200
$config['warnings_gc'] = 14400
$config['database_gc'] = 604800
$config['search_gc'] = 7200
$config['session_gc'] = 3600
Аватара пользователя
nissin
phpBB 3.0.4
Сообщения: 2229
Стаж: 18 лет 9 месяцев
Откуда: Астана
Благодарил (а): 7 раз
Поблагодарили: 344 раза

Re: Некорректная дата последнего посещения форума

Сообщение nissin »

Мне сложно сказать, может на сервере дату хостер переставлял, проверял будет ли конец света, или всё врут враги :)
Но таки да, небольшой конец света наступил...
Поставьте нуль вместо 2012 года.
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 19 лет 7 месяцев
Откуда: Калининград не Кенигсберг
Благодарил (а): 54 раза
Поблагодарили: 2756 раз

Re: Некорректная дата последнего посещения форума

Сообщение Sheer »

nissin писал(а):Но таки да, небольшой конец света наступил...
:lol: Вот и я подумал. Наверное хостер таки проверял, ибо у меня подозрение закралось, что проблема возникла именно после апгрейда софта на серваке.
Поставлю в нули, а через какое время крон должен срабатывать?

Вернуться в «Поддержка phpBB 3.0.х»