SA-MP Forums Archive
mysql_query, mysql_tquery - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Русский/Russian (https://sampforum.blast.hk/forumdisplay.php?fid=32)
+---- Thread: mysql_query, mysql_tquery (/showthread.php?tid=646530)



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
View Post
Не стоит только бездумно теперь всё переводить на многопоточные запросы. Если у тебя появилась такая мысль первым делом - бросай всё и иди работать в шахту. У однопоточных запросов так же есть своё предназначение и не везде подойдут многопоточные (например, при загрузке сервера многие очень плачут, мол игроки заходят раньше того, как данные выгрузятся и у них из-за этого проблемы. Однопоточные запросы + простенький костыль на всякий случай и всё, никаких проблем)
При загрузке тоже можно обойтись без однопоточных, просто залочив сервер.

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


Re: mysql_query, mysql_tquery - Eims - 20.12.2017

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

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


Re: mysql_query, mysql_tquery - TriskeliS - 21.12.2017

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