Кэширование в PHP
18 May 2008 – 14:55Уже невозможно представить современный сайт так или иначе не использующий возможностей кэширования. Создание кэша - одно из средств оптимизации, позволяющее значительно увеличить производительность работы вашего движка. Существует несколько вариантов использования механизма кэширования.
Первый вариант - использование PEAR пакета Cache_Lite для выборочного кэширования данных.
Это небольшое и простое решение позволяет кэшировать как результаты запроса, так и страницу целиком.
Сохраняем в кэше (в директории /to/cachedir/) результаты mysql запроса, время жизни устанавливаем 1 час:
-
-
require_once 'Cache/Lite.php';
-
-
$query = 'SELECT * FROM `tab`';
-
-
-
if (!($res_id = $cache->get($query))) {
-
$cache->save($res_id, $query);
-
}
-
Второй вариант - кэшировать байткод. Для этого подходит PECL модуль APC, который позволяет избежать трансляции одного и того же PHP кода в байткод при каждом вызове скрипта.
Для настройки модуля правим php.ini:
-
-
extension=apc.so
-
-
[apc]
-
apc.enabled = 1
-
apc.shm_segments = 4
-
apc.shm_size = 64
-
apc.optimization = 0
-
apc.ttl = 3600
-
apc.user_ttl = 3600
-
apc.num_files_hint = 1000
-
apc.mmap_file_mask = /tmp/apc.XXXXXX
-
Функция для трансляции и сохранения в кэше может выглядеть так:
-
-
function compile_files($dir){
-
compile_files($v);
-
}
-
}
-
-
apc_compile_file($v);
-
}
-
}
-
}
-
compile_files('/to/cachedir');
-
Третий вариант позволяет кэшировать данные не на харде, а в оперативной памяти, для этого будем использовать PECL модуль memcached. Сервер memcached впервые был разработан для LiveJournal и позволил снизить загрузку серверов баз данных в разы.
Пример использования:
-
-
$id = (int) $_GET['id'];
-
-
$memcached = new Memcache;
-
$memcached->connect('hostname', 11211);
-
-
if (!$row = $memcached->get('id_' . $id)){
-
}}
-

комментарии (1) to “Кэширование в PHP”
Дмитрий Ожегов -- Jun 16, 2008
Точно так же и я делаю))))))))