SA-MP Forums

Go Back   SA-MP Forums > Non-English > Languages > Русский/Russian

Reply
 
Thread Tools Display Modes
Old 18/12/2017, 04:14 PM   #1
DeepCode
Big Clucker
 
DeepCode's Avatar
 
Join Date: Mar 2014
Location: Russia
Posts: 96
Reputation: 39
Default mysql_query, mysql_tquery

Ку! В двух словах, в чем разница между mysql_tquery и mysql_pquery? В чем разница между mysql_query и, например, mysql_tquery я, кажется, понял. В возможности вызывать колбэк для работы с кешем в mysql_tquery.
Тогда появляется второй вопрос. Есть ли существенная разница как я буду работать с кешем, через new Cache: или коллбэк? Какие подводные камни, и в чем опасность? Почему многие так сильно любят коллбэки, а не работать напрямую
__________________
privet
DeepCode is offline   Reply With Quote
Old 19/12/2017, 10:12 AM   #2
Salik
Big Clucker
 
Salik's Avatar
 
Join Date: Aug 2015
Location: Russia
Posts: 80
Reputation: 0
Default Re: mysql_query, mysql_tquery

там разница была в многопоточности/однопоточности.
Salik is offline   Reply With Quote
Old 19/12/2017, 03:20 PM   #3
f0Re3t
Little Clucker
 
Join Date: Aug 2015
Posts: 19
Reputation: 1
Default Re: mysql_query, mysql_tquery

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

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

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

"Какие подводные камни, и в чем опасность? Почему многие так сильно любят коллбэки, а не работать напрямую"
смотри и додумай пункт номер 3
f0Re3t is offline   Reply With Quote
Old 20/12/2017, 02:31 PM   #4
Eims
Huge Clucker
 
Eims's Avatar
 
Join Date: May 2013
Location: Восточный Мордор
Posts: 410
Reputation: 11
Default Re: mysql_query, mysql_tquery

Не стоит только бездумно теперь всё переводить на многопоточные запросы. Если у тебя появилась такая мысль первым делом - бросай всё и иди работать в шахту. У однопоточных запросов так же есть своё предназначение и не везде подойдут многопоточные (например, при загрузке сервера многие очень плачут, мол игроки заходят раньше того, как данные выгрузятся и у них из-за этого проблемы. Однопоточные запросы + простенький костыль на всякий случай и всё, никаких проблем)
__________________
- How many IT Engineers does it take to fix a broken light bulb?
- None, the light bulb works fine in my office, I cannot replicate the issue.
Eims is offline   Reply With Quote
Old 20/12/2017, 03:38 PM   #5
DeepCode
Big Clucker
 
DeepCode's Avatar
 
Join Date: Mar 2014
Location: Russia
Posts: 96
Reputation: 39
Default Re: mysql_query, mysql_tquery

ну вот, теперь мне все ясно! спасибо, ребят
__________________
privet
DeepCode is offline   Reply With Quote
Old 20/12/2017, 03:59 PM   #6
stabker
High-roller
 
stabker's Avatar
 
Join Date: Mar 2012
Location: Andromeda Galaxy
Posts: 1,319
Reputation: 86
Default Re: mysql_query, mysql_tquery

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

Где еще, по вашему, без однопоточных не обойтись?
__________________
stabker is offline   Reply With Quote
Old 20/12/2017, 04:58 PM   #7
Eims
Huge Clucker
 
Eims's Avatar
 
Join Date: May 2013
Location: Восточный Мордор
Posts: 410
Reputation: 11
Default Re: mysql_query, mysql_tquery

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

Quote:
Originally Posted by stabker View Post
Где еще, по вашему, без однопоточных не обойтись?
Эмм, в любых системах, которые сильно зависят от данных из БД. Либо же в системах, где несколько человек могут работать с одними и теми же данными. Систем, где однопоточные запросы прямо остро необходимы, не так уж и много, поэтому сейчас с ходу пример и не назову (но случаи были). На моём опыте гораздо больше примеров, когда однопоточные запросы в разы упрощали код (система загрузки и созданения данных сервера - простой тому пример), не особо убивая, при этом, производительность (либо сами запросы простые, либо возможные лаги от обработки запроса уместны в конкретном случае, как с загрузкой данных).
__________________
- How many IT Engineers does it take to fix a broken light bulb?
- None, the light bulb works fine in my office, I cannot replicate the issue.
Eims is offline   Reply With Quote
Old 21/12/2017, 04:39 PM   #8
TriskeliS
Big Clucker
 
Join Date: Jun 2011
Posts: 69
Reputation: 0
Default Re: mysql_query, mysql_tquery

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

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
mysql_tquery MerryDeer Scripting Help 3 07/09/2016 08:47 AM
The logic of mysql query functions (mysql_query vs mysql_tquery) godless_phoenix Scripting Help 0 29/08/2016 10:09 AM
mysql_tquery MerryDeer Scripting Help 1 11/08/2016 12:03 PM
MYSQL mysql_query or mysql_tquery? Adi007 Scripting Help 1 21/06/2015 03:54 PM


All times are GMT. The time now is 11:38 AM.


Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.