[Вопросы] MySQL Plugin by BlueG
#1

И прошло более 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_*" работают именно с моим запросом а не с другим?
Reply
#2

В третьем параметре вы можете указать любой колбек, и каждый ответ обрабатывать отдельно.
А так же вы можете передавать дополнительные параметры для того что бы персонализировать запросы.
Reply
#3

Хорошо, спрошу иначе...

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()" вернёт кол-во ворот.
Reply
#4

sa-mp однопоточен и при вызове колбека плагин работает с одним набором данных, при вызове следующего там свой набор данных.
Reply
#5

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

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


Forum Jump:


Users browsing this thread: 1 Guest(s)