mysql_query, mysql_tquery -
DeepCode - 18.12.2017
Ку! В двух словах, в чем разница между mysql_tquery и mysql_pquery? В чем разница между mysql_query и, например, mysql_tquery я, кажется, понял. В возможности вызывать колбэк для работы с кешем в mysql_tquery.
Тогда появляется второй вопрос. Есть ли существенная разница как я буду работать с кешем, через new Cache: или коллбэк? Какие подводные камни, и в чем опасность? Почему многие так сильно любят коллбэки, а не работать напрямую
Re: mysql_query, mysql_tquery -
Salik - 19.12.2017
там разница была в многопоточности/однопоточности.
Re: mysql_query, mysql_tquery -
f0Re3t - 19.12.2017
"В двух словах, в чем разница между mysql_tquery и mysql_pquery?"
tquery - вызывает запросы в режиме очереди
pquery - обрабатывает запрос сразу же, без очереди (не советую использовать если нет знаний)
" В чем разница между mysql_query и, например, mysql_tquery я, кажется, понял."
query - однопоточный режим
tquery - многопоточный режим
" Есть ли существенная разница как я буду работать с кешем, через new Cache: или коллбэк?"
есть, с tquery - мод будет дальше заниматься своими делами, а с query - ждать пока придет результат
"Какие подводные камни, и в чем опасность? Почему многие так сильно любят коллбэки, а не работать напрямую"
смотри и додумай пункт номер 3
Re: mysql_query, mysql_tquery -
Eims - 20.12.2017
Не стоит только бездумно теперь всё переводить на многопоточные запросы. Если у тебя появилась такая мысль первым делом - бросай всё и иди работать в шахту. У однопоточных запросов так же есть своё предназначение и не везде подойдут многопоточные
(например, при загрузке сервера многие очень плачут, мол игроки заходят раньше того, как данные выгрузятся и у них из-за этого проблемы. Однопоточные запросы + простенький костыль на всякий случай и всё, никаких проблем)
Re: mysql_query, mysql_tquery -
DeepCode - 20.12.2017
ну вот, теперь мне все ясно! спасибо, ребят
Re: mysql_query, mysql_tquery -
stabker - 20.12.2017
Quote:
Originally Posted by Eims
Не стоит только бездумно теперь всё переводить на многопоточные запросы. Если у тебя появилась такая мысль первым делом - бросай всё и иди работать в шахту. У однопоточных запросов так же есть своё предназначение и не везде подойдут многопоточные (например, при загрузке сервера многие очень плачут, мол игроки заходят раньше того, как данные выгрузятся и у них из-за этого проблемы. Однопоточные запросы + простенький костыль на всякий случай и всё, никаких проблем)
|
При загрузке тоже можно обойтись без однопоточных, просто залочив сервер.
Где еще, по вашему, без однопоточных не обойтись?
Re: mysql_query, mysql_tquery -
Eims - 20.12.2017
Quote:
Originally Posted by stabker
При загрузке тоже можно обойтись без однопоточных, просто залочив сервер.
|
Неудобство для игроков, ибо придётся перезапускать игру, так как при коннекте выплюнет ошибку о том, что пароль неверный. Лучше уж пусть сервер займётся загрузкой и просто не будет пускать игроков. А на случай, если всё же кто-то пробьётся по очереди, сделать банальную систему ожидания.
То бишь, создать переменную и при старте приравнять её к единице. При входе проверять, равна ли переменная единице или нет. Если равна - выводим диалог, мол нужно подождать. Только загрузка завершается, сразу присваиваем переменной нулевое значение и выводим всем подключённым игрокам диалог с авторизацией. Просто и сердито.
Можно, конечно, и с многопоточными запросами такое провернуть, но тогда после рестарта на сервер сразу забьётся человек под 300 (ну при соответствующем онлайне) и когда загрузка завершится, все 300 человек начнут одновременно слать запросы, когда в случае с однопоточными запросами сервер вряд ли успеет много народу впустить и "флуда" будет меньше.
Quote:
Originally Posted by stabker
Где еще, по вашему, без однопоточных не обойтись?
|
Эмм, в любых системах, которые сильно зависят от данных из БД. Либо же в системах, где несколько человек могут работать с одними и теми же данными. Систем, где однопоточные запросы прямо остро необходимы, не так уж и много, поэтому сейчас с ходу пример и не назову (но случаи были). На моём опыте гораздо больше примеров, когда однопоточные запросы в разы упрощали код (система загрузки и созданения данных сервера - простой тому пример), не особо убивая, при этом, производительность (либо сами запросы простые, либо возможные лаги от обработки запроса уместны в конкретном случае, как с загрузкой данных).
Re: mysql_query, mysql_tquery -
TriskeliS - 21.12.2017
Quote:
Originally Posted by Eims
Эмм, в любых системах, которые сильно зависят от данных из БД. Либо же в системах, где несколько человек могут работать с одними и теми же данными. Систем, где однопоточные запросы прямо остро необходимы, не так уж и много, поэтому сейчас с ходу пример и не назову (но случаи были). На моём опыте гораздо больше примеров, когда однопоточные запросы в разы упрощали код (система загрузки и созданения данных сервера - простой тому пример), не особо убивая, при этом, производительность (либо сами запросы простые, либо возможные лаги от обработки запроса уместны в конкретном случае, как с загрузкой данных).
|
Эмм, транзакции, не?