[Вопросы] MySQL Plugin by BlueG -
-Stranger- - 02.03.2020
И прошло более 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_*" работают именно с моим запросом а не с другим?
Re: [Вопросы] MySQL Plugin by BlueG -
Stepashka - 02.03.2020
В третьем параметре вы можете указать любой колбек, и каждый ответ обрабатывать отдельно.
А так же вы можете передавать дополнительные параметры для того что бы персонализировать запросы.
Re: [Вопросы] MySQL Plugin by BlueG -
-Stranger- - 02.03.2020
Хорошо, спрошу иначе...
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()" вернёт кол-во ворот.
Re: [Вопросы] MySQL Plugin by BlueG -
Stepashka - 03.03.2020
sa-mp однопоточен и при вызове колбека плагин работает с одним набором данных, при вызове следующего там свой набор данных.
Re: [Вопросы] MySQL Plugin by BlueG -
-Stranger- - 03.03.2020
Ага, т.е. получается что запросы поступают одним потоком, в плагине обрабатываются разными потоками, какой быстрее обработался тот колбек и вызывается, с нужным набором данных. Если в это время пришёл ответ на другой запрос, то он задерживается до выхода из предыдущего колбека.
При это если мне нужно сохранить данные и обратится к ним вне колбека, попозже, то используем функции cache_save, cache_set_active, cache_delete.
Всё понятно, спасибо. Остальные вопросы отпали сами собой..