Когда ты отправляешь запрос, который возвращает кэш, ты можешь его сохранить, использовав функцию cache_save, которая возвратит ID кэша так же, как возвращает mysql_query. То бишь
PHP код:
new Cache:result = cache_save(mysql_connect_ID); // Кэш записан
Ты так же можешь записать ID кэша в глобальную переменную и потом обратиться к нему в любой момент времени. Но, соответственно, он будет забивать память сервера, посему следует обязательно удалять его после того, как он уже не нужен, если не хочешь получить краш сервера из-за переполнения памяти.
Удаляется кэш при помощи функции cache_delete.
PHP код:
cache_delete(result, mysql_connect_ID);
Переключаться на нужный кэш можно при помощи функции cache_set_active.
PHP код:
cache_set_active(result, mysql_connect_ID);
Ну а cache_is_valid проверяет, существует ли кэш
Вообще в комплекте с исходниками плагина MySQL имеется
пример системы регистрации, в котором как раз и идёт работа с кэшем
(по идее, регистрацию так и нужно писать). Советую подробнее изучить код этой системы.
А твоя загрузка должна выглядеть как-то так:
PHP код:
publics: LoadBusiness()
{
new rows,
time = GetTickCount();
cache_get_row_count(rows);
if(gBusinessCount >= MAX_BUSINESS_COUNT)
print("[MySQL] Кол-во бизнесов в базе превышает предопределнное количество");
if(!rows)
return print("[MySQL] Бизнесы не были загружены!");
new Cache:result = cache_save(mysql_connect_ID);
gBusinessCount = rows;
printf("rows - %d", rows);
for(new i; i < rows; i++)
{
print("===================");
printf("i - %d", i);
cache_get_value_name_int(i, "id", gBusiness[i][busiID]);
cache_get_value_name_int(i, "ownerid", gBusiness[i][busiOwnerID]);
cache_get_value_name(i, "name", gBusiness[i][busiName], 32);
cache_get_value_name_int(i, "type", gBusiness[i][busiType]);
cache_get_value_name_int(i, "bint", gBusiness[i][busiBint]);
cache_get_value_name_int(i, "price", gBusiness[i][busiPrice]);
cache_get_value_name_int(i, "status", gBusiness[i][busiStatus]);
cache_get_value_name_int(i, "enterprice", gBusiness[i][busiEnterPrice]);
cache_get_value_name_int(i, "bank", gBusiness[i][busiBank]);
cache_get_value_name_int(i, "product", gBusiness[i][busiProduct]);
cache_get_value_name_int(i, "mafia", gBusiness[i][busiMafia]);
cache_get_value_name_float(i, "x", gBusiness[i][busiX]);
cache_get_value_name_float(i, "y", gBusiness[i][busiY]);
cache_get_value_name_float(i, "z", gBusiness[i][busiZ]);
cache_get_value_name_float(i, "r", gBusiness[i][busiR]);
printf("id - %d, ownerid - %d, name - %s", gBusiness[i][busiID], gBusiness[i][busiOwnerID], gBusiness[i][busiName]);
printf("CreateDynamicPickup");
CreateDynamicPickup(19132, 1, gBusiness[i][busiX],gBusiness[i][busiY],gBusiness[i][busiZ]);
printf("CreateBusinessText");
gBusinessText[i] = CreateDynamic3DTextLabel("_", CWHITE, gBusiness[i][busiX], gBusiness[i][busiY], gBusiness[i][busiZ]+1.0, 20.0);
printf("UpdateBusinessText");
UpdateBusinessText(i);
cache_set_active(result, mysql_connect_ID);
print("===================");
}
cache_delete(result, mysql_connect_ID);
printf("[MySQL]: Загружено %d бизнесов за %d м.с.", gBusinessCount, GetTickCount()-time);
return true;
}