SA-MP Forums

SA-MP Forums (https://forum.sa-mp.com/index.php)
-   Русский/Russian (https://forum.sa-mp.com/forumdisplay.php?f=32)
-   -   [Вопросы] MySQL Plugin by BlueG (https://forum.sa-mp.com/showthread.php?t=672822)

-Stranger- 02/03/2020 05:48 PM

[Вопросы] MySQL Plugin by BlueG
 
И прошло более 5 лет и решил я опять поднять свой сервер. Думал что за это время и ООП пришло и хотя-бы pawn был обновлён, но ....

Всем привет.
Начал писать новый мод с нуля и возникли непонятки в работе плагина MySQL от BlueG.
Вопрос 1:
PHP Code:

mysql_tquery(CORE_SQL"SELECT * FROM `OBJECTS`""OnSQLResponse");
public 
OnSQLResponse(type){} 

Далее в этом колбеке используются функции "cache_get_*", например "cache_get_row_count".
Где связь запроса и содержания этих функций? Как я могу быть уверен что в ответ эти функции будут возвращать ответ именно на нужный мне запрос?
Например: Выполняется этот запрос, допустим его ответ придёт через 10 секунд, и в это время выполняется запрос на поиск игрока, который придёт мгновенно и в OnResponse* я буду использовать точно такие-же функции.
Я не понимаю где указание на то, что фуккции "cache_get_*" работают именно с моим запросом а не с другим?

Stepashka 02/03/2020 06:17 PM

Re: [Вопросы] MySQL Plugin by BlueG
 
В третьем параметре вы можете указать любой колбек, и каждый ответ обрабатывать отдельно.
А так же вы можете передавать дополнительные параметры для того что бы персонализировать запросы.

-Stranger- 02/03/2020 08:35 PM

Re: [Вопросы] MySQL Plugin by BlueG
 
Хорошо, спрошу иначе...

PHP Code:

mysql_tquery(CORE_SQL"SELECT * FROM `OBJECTS`""OnSQLResponse1");
mysql_tquery(CORE_SQL"SELECT * FROM `GATES`""OnSQLResponse2");

public 
OnSQLResponse1()
{
    new 
row_count;
    
cache_get_row_count(row_count);
    
printf("* Found %d objects, loading ... "row_count);
}

public 
OnSQLResponse2()
{
    new 
row_count;
    
cache_get_row_count(row_count);
    
printf("* Found %d gates, loading ... "row_count);


Название функции "cache_get_row_count()" одинаковое, в неё не передаётся объект\id response sql запроса, как это сделано у нормальных людей, например "cache_get_row_count(response)". Так почему первый "cache_get_row_count()" вернёт кол-во объектов, а второй "cache_get_row_count()" вернёт кол-во ворот.

Stepashka 03/03/2020 06:37 AM

Re: [Вопросы] MySQL Plugin by BlueG
 
sa-mp однопоточен и при вызове колбека плагин работает с одним набором данных, при вызове следующего там свой набор данных.

-Stranger- 03/03/2020 12:22 PM

Re: [Вопросы] MySQL Plugin by BlueG
 
Ага, т.е. получается что запросы поступают одним потоком, в плагине обрабатываются разными потоками, какой быстрее обработался тот колбек и вызывается, с нужным набором данных. Если в это время пришёл ответ на другой запрос, то он задерживается до выхода из предыдущего колбека.
При это если мне нужно сохранить данные и обратится к ним вне колбека, попозже, то используем функции cache_save, cache_set_active, cache_delete.

Всё понятно, спасибо. Остальные вопросы отпали сами собой..


All times are GMT. The time now is 12:09 AM.

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