Работа с временными зонами

₮αй₮оβый

Участник
Сообщения
327
Реакции
36
Есть плагин, который отправляет инфу в базу данных, инфа связанна со временем, потом эта инфа идет на web, проблема в том, что время пишет 11:18:16, на часах по МСК 14:18:16, Сам вопрос, как мне указать МСК время, где и что прописывать (в плагине, в базе или в web части) пробовал в web части, добавить варианты из интернета эффекта ноль
 

selax

elistor.ru
Сообщения
1,175
Реакции
523
@₮αй₮оβый, странно. Переменная sm_time_adjustment точно изменилась? Что выводит эта команда:
PHP:
sm_cvar sm_time_adjustment
 

selax

elistor.ru
Сообщения
1,175
Реакции
523
@₮αй₮оβый, я не смотрел что я делаю. >.<
Тогда понятно в принципе.
--- Добавлено позже ---
@₮αй₮оβый, строку:
PHP:
Format ( query, sizeof( query ), "INSERT IGNORE INTO `players_time` ( `steamid`, `nick`, `ip`, `first`, `last`, `time`, `type` ) VALUES ( '%s', '%s', '%s', UNIX_TIMESTAMP(NOW()), UNIX_TIMESTAMP(NOW()), %d, %d ) ON DUPLICATE KEY UPDATE `time` = `time` + %d, `last` = UNIX_TIMESTAMP(NOW())",
    arr_steamid [ client ], arr_nick [ client ], arr_ip [ client ], arr_time [ client ], ( GetUserAdmin(client) != INVALID_ADMIN_ID ) ? 1 : 0, arr_time [ client ] );
Замените на:
PHP:
Format ( query, sizeof( query ), "INSERT IGNORE INTO `players_time` ( `steamid`, `nick`, `ip`, `first`, `last`, `time`, `type` ) VALUES ( '%s', '%s', '%s', %d, %d, %d, %d ) ON DUPLICATE KEY UPDATE `time` = `time` + %d, `last` = UNIX_TIMESTAMP(NOW())",
    arr_steamid [ client ], arr_nick [ client ], arr_ip [ client ], GetTime ( ), GetTime ( ), arr_time [ client ], ( GetUserAdmin(client) != INVALID_ADMIN_ID ) ? 1 : 0, arr_time [ client ] );
Это позволит менять время через sm_time_adjustment.
Я там косяки плагина оставил просто, сделал всё как есть с небольшими изменениями.
 

selax

elistor.ru
Сообщения
1,175
Реакции
523
@₮αй₮оβый, разница редактируется переменной sm_time_adjustment, в секундах.
Можете прислать дамп базы чтобы дубли посмотреть?
 

selax

elistor.ru
Сообщения
1,175
Реакции
523
@₮αй₮оβый, понял проблему. База ищет уникальных пользователей по нику, а не Steam ID. Этот косяк из sma ещё.
Для решения проблемы:
1. Смените индекс authid с nick на steamid. Перед этим нужно очистить базу, если там повторы есть.
Вот SQL запрос, чтобы всё разом сделать:
PHP:
TRUNCATE TABLE `players_time`;
ALTER TABLE `players_time`
   DROP INDEX `authid`,
   ADD UNIQUE KEY `authid` (`steamid`)

2. Не обязательно, но если в будущем плагин прилеплять к другой базе будете, то измените в плагине строчку:
PHP:
        UNIQUE KEY `authid` (`nick`)\
На строчку:
PHP:
        UNIQUE KEY `authid` (`steamid`)\
 

selax

elistor.ru
Сообщения
1,175
Реакции
523
@₮αй₮оβый, если хочешь - можешь оплатить мне интернет и я сам всё найду как сделать и сделаю. :)
Просто сижу с телефона, где кстати тоже баланс на 0. Ничего, кроме HLmod у меня по какой то причине не грузится. И то жутко медленно. >.<
 

selax

elistor.ru
Сообщения
1,175
Реакции
523
@₮αй₮оβый, ыыы, а мне просто лень до банкомата идти. :D
Тогда только после праздников. :)
 
Последнее редактирование:
Сверху Снизу