mysql_query, mysql_tquery
#1

Ку! В двух словах, в чем разница между mysql_tquery и mysql_pquery? В чем разница между mysql_query и, например, mysql_tquery я, кажется, понял. В возможности вызывать колбэк для работы с кешем в mysql_tquery.
Тогда появляется второй вопрос. Есть ли существенная разница как я буду работать с кешем, через new Cache: или коллбэк? Какие подводные камни, и в чем опасность? Почему многие так сильно любят коллбэки, а не работать напрямую
Reply
#2

там разница была в многопоточности/однопоточности.
Reply
#3

"В двух словах, в чем разница между mysql_tquery и mysql_pquery?"
tquery - вызывает запросы в режиме очереди
pquery - обрабатывает запрос сразу же, без очереди (не советую использовать если нет знаний)

" В чем разница между mysql_query и, например, mysql_tquery я, кажется, понял."
query - однопоточный режим
tquery - многопоточный режим

" Есть ли существенная разница как я буду работать с кешем, через new Cache: или коллбэк?"
есть, с tquery - мод будет дальше заниматься своими делами, а с query - ждать пока придет результат

"Какие подводные камни, и в чем опасность? Почему многие так сильно любят коллбэки, а не работать напрямую"
смотри и додумай пункт номер 3
Reply
#4

Не стоит только бездумно теперь всё переводить на многопоточные запросы. Если у тебя появилась такая мысль первым делом - бросай всё и иди работать в шахту. У однопоточных запросов так же есть своё предназначение и не везде подойдут многопоточные (например, при загрузке сервера многие очень плачут, мол игроки заходят раньше того, как данные выгрузятся и у них из-за этого проблемы. Однопоточные запросы + простенький костыль на всякий случай и всё, никаких проблем)
Reply
#5

ну вот, теперь мне все ясно! спасибо, ребят
Reply
#6

Quote:
Originally Posted by Eims
View Post
Не стоит только бездумно теперь всё переводить на многопоточные запросы. Если у тебя появилась такая мысль первым делом - бросай всё и иди работать в шахту. У однопоточных запросов так же есть своё предназначение и не везде подойдут многопоточные (например, при загрузке сервера многие очень плачут, мол игроки заходят раньше того, как данные выгрузятся и у них из-за этого проблемы. Однопоточные запросы + простенький костыль на всякий случай и всё, никаких проблем)
При загрузке тоже можно обойтись без однопоточных, просто залочив сервер.

Где еще, по вашему, без однопоточных не обойтись?
Reply
#7

Quote:
Originally Posted by stabker
View Post
При загрузке тоже можно обойтись без однопоточных, просто залочив сервер.
Неудобство для игроков, ибо придётся перезапускать игру, так как при коннекте выплюнет ошибку о том, что пароль неверный. Лучше уж пусть сервер займётся загрузкой и просто не будет пускать игроков. А на случай, если всё же кто-то пробьётся по очереди, сделать банальную систему ожидания.
То бишь, создать переменную и при старте приравнять её к единице. При входе проверять, равна ли переменная единице или нет. Если равна - выводим диалог, мол нужно подождать. Только загрузка завершается, сразу присваиваем переменной нулевое значение и выводим всем подключённым игрокам диалог с авторизацией. Просто и сердито.
Можно, конечно, и с многопоточными запросами такое провернуть, но тогда после рестарта на сервер сразу забьётся человек под 300 (ну при соответствующем онлайне) и когда загрузка завершится, все 300 человек начнут одновременно слать запросы, когда в случае с однопоточными запросами сервер вряд ли успеет много народу впустить и "флуда" будет меньше.

Quote:
Originally Posted by stabker
View Post
Где еще, по вашему, без однопоточных не обойтись?
Эмм, в любых системах, которые сильно зависят от данных из БД. Либо же в системах, где несколько человек могут работать с одними и теми же данными. Систем, где однопоточные запросы прямо остро необходимы, не так уж и много, поэтому сейчас с ходу пример и не назову (но случаи были). На моём опыте гораздо больше примеров, когда однопоточные запросы в разы упрощали код (система загрузки и созданения данных сервера - простой тому пример), не особо убивая, при этом, производительность (либо сами запросы простые, либо возможные лаги от обработки запроса уместны в конкретном случае, как с загрузкой данных).
Reply
#8

Quote:
Originally Posted by Eims
View Post
Эмм, в любых системах, которые сильно зависят от данных из БД. Либо же в системах, где несколько человек могут работать с одними и теми же данными. Систем, где однопоточные запросы прямо остро необходимы, не так уж и много, поэтому сейчас с ходу пример и не назову (но случаи были). На моём опыте гораздо больше примеров, когда однопоточные запросы в разы упрощали код (система загрузки и созданения данных сервера - простой тому пример), не особо убивая, при этом, производительность (либо сами запросы простые, либо возможные лаги от обработки запроса уместны в конкретном случае, как с загрузкой данных).
Эмм, транзакции, не?
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)