[help] кеширование запросов (онлайн сервера)
Как сделать чтобы скрипт делал раз в 20 минут запрос к базе, а не по каждому обновлению страници?(использую ребилион веб)
если в коде что-то надо поправить подскажите плиз что именно:
$query=db_query("SELECT COUNT(*) FROM `characters` WHERE online=1 AND accesslevel<5", $conn, true, $conf_cache['mod_servers'], $u_query) or db_error("Не удалось получить данные из базы", $conn);
$online_col=db_respond($query, "result", $u_query);
if (!$online_col) $online_col=0;
$gs_name=$game_server[$i]['name'];
$gs_status=$game_isonline?$conf['game_online']:$conf['game_offline'];
$gs_type=$game_server[$i]['type'];
$gs_rates=$game_server[$i]['rates'];
$game_servers_stat.=t_parse("",get_defined_vars(), $game_server_html);
if ($i<$c-1) $game_servers_stat.="<br>";
db_close($conn);
}
как ты себе это представляешь? пхп работает вообще когда его вызывают будь то пользователь на сайте или скрипт в кроне
hellEVIL_TEAM: как ты себе это представляешь? пхп работает вообще когда его вызывают будь то пользователь на сайте или скрипт в кроне
а на дле реально такую статистику сделать?
hellEVIL_TEAM: как ты себе это представляешь? пхп работает вообще когда его вызывают будь то пользователь на сайте или скрипт в кроне
Выполняется скрипт статистики:
Скрипт заходит в файл с кешированными данными, проверяет последнее время добавления, если данные сташе 20 минут то выполняется запрос к удаленной базе данных (ну или локально) и сохраняет данные статистики опять же в файл и меняет время добавления. Вот так по логике можно представить. Я за такой кеш только ЗА.
мда ...
по поводу кеширования. Нужно сделать выборку онлайна функцией.
1) Открываем файл, смотрим дату
2) запоминаем дату
3) сравниваем с текущей
4) если файлу меньше 20 минут - переменной, отвечающей за онлайн присваиваем значение из файла
5) закрываем файл
6) иначе конектимся
7) делаем выборку из таблицы
8) присваиваем переменной онлайна значение результата выборки
9) закрываем сеанс с БД
10) открываем фай на запись
11) стираем содержимое
12) записываем новое | дата
13) сохраняем
14) выводим результат
уважаемый, кто это вам за спасибо будет писать ? мало кто, и дело даже не в том ... какова эффективность этого ? к кешированию нужно подходить комплексно, а не так - это я закеширую, это нет. Кеширование эффективно если записывать несколько значений, а не 1 число.
WebDeveloper сервера DARKWORLD
Кстати в реббелионе веб есть поддержка кеша. Может просто афтор забыл поставить настройки?
// Время кэширования запросов базы данных, по истечении которого кэш обновляется (задается в секундах)
$conf_cache['mod_servers'] = 300;
$conf_cache['mod_allys'] = 900;
$conf_cache['mod_bans'] = 900;
$conf_cache['mod_castles'] = 10800;
$conf_cache['mod_clans'] = 900;
$conf_cache['mod_general'] = 900;
может оно и кеширует, смотри наличие tmp-файлов. Если ты решил серьёзно к этому подойти - делай кеширование скомпилированного исходного кода, как например новости в ДЛЕ.
Т.е. тебе в tmp нужно забивать все данные - ячейки таблицы, в которых статус сервера, онлайн, к-во аккаунтов и персонажей - тогда от этого будет толк, т.к. во-первых нету выборки и соединения с БД, а во вторых прирост 25-80% за счёт пропуска компилирования.
// P.S. меня кеширование тоже заинтересовало, а именно на примере DLE, так что буду чего искать
WebDeveloper сервера DARKWORLD
самое основное кэширование настраиваеться на сервере mysql остальное с использованием отдельных библиотек типа memchache
Хм, маленько не в попад теме, но околотого: насколько выгодно использовать процедуры в mysql(mssql) вместо простых запросов из пхп (онлайн, кол-во чаров и тд и тп)
— Дурак дураком



