Тема: mysql запрос
Показать сообщение отдельно
Непрочитано 27.03.2012, 10:02   #37
Аватар для Yorie

По умолчанию Re: mysql запрос

Какие-то дикие решения
На мой взгляд два варианта:
- Подключиться к серверу из пыхи. Это можно сделать выделенным сокет-соединением или XML-RPC либой под Java или еще чем-нибудь. Отправить запрос и получить максимальный ObjectID. Хотя и это не особо хорошо, т.к. нет возможности синхронизировать процесс. Поэтому нужно отправлять серверу сразу запрос на создание нового предмета, чтобы сам сервер это сделал, а не пыхоскрипт;
- Писать максимальный ObjectId в какой-нибудь файл, либо в БД, при работе пыхоскрипта брать это значение. Шанс десинха тут минимален.

Первый вариант правильнее и предпочтительнее, но более затратен по реализации и требует определенных знаний.
А Ваши костыли с rand это имхобред, Рут прав, IdFactory сервера всегда начинает отсчет с максимального номера, так можно Long.MAX_VALUE забить за пару дней при достаточном онлайне. И потом, как сервер узнает, что увеличился ObjectId? Т.е. пока он не рестартнулся он будет продолжать считать, допустим, от 100. А Вы создали предмет с ID = 999. В итоге, когда сервер дойдет до 999 получите exception с дублированным ID и чья-то выбитая эпик бижа уйдет в небытие оперативной памяти
__________________
// aka Deft
Yorie вне форума Ответить с цитированием