взято отсюда (
http://www.destinysphere.ru/forum/viewtopic.php?t=3356), так как этот топик, похоже, кроме игрокам более никому не интересен:
ЕЕЕ МОЕ......вчера посмотрел на разницу времен сервера и базы данных у заказчика и у меня родилась идея:
ВОПРОС К ДЕВЕЛОПЕРАМ:
у вас, случаем, база данных и сама игруха не на разных серверах пашут? для сервиса хостинга это очень распространенное решение. допустим, наша контора занимается програмным обеспечением больших корпоративных сетей и там, как правило, на основную базу данных стоит отдельно двухпроцессорный ксеончик (самый распространенный вариант), а аппликейшн серверы бегают на двух-трех других. частенько такой подход бывает и у крупных сервисов хоста, так как это удобно в администрации: сидит админ БД на одной машине и следит за базами, сидит системщик на другой и следит за поведением сервака естесственно, если и в MySQL (через SELECT), и в перловке или пхпешке (через функцию date()) запрашивать время сервера, то есть всегда вероятность получения разницы в результатах.
тут выхода три:
1) просить постоянно делать синхронизацию времени на серверах и предоставляющих хостинг;
2) перейти на время БД всей програмной частью. это требует определенных усилий, но тогда вопросов и предложений больше не будет. просто вмeсто "date()" при начале действий делать по MySQL синтаксису "SELECT NOW ( )" или "SELECT GETDATE()" в Sybase/MS SQL (Oracle не помню). и все будет ок
3) создать глобальную переменную времени, которая бы раз в 30/60 секунд делала бы запрос к базе данных и спрашивала бы текущее ее время. это позволило бы сократить количество хоть и быстрых и не делающих LOCK'ов, но берущих время и ресурсы запросов. не знаю, как на других языках, но на Java этот класс занимал бы максимум строчек 15.