Alexandre
PHPПенсионер
модуль DBCache. beta version. FAQ.
где взять пока тут
как работает
берет хеш запроса, который является именем файла. если время последнего update +livetime (sec) менее time() - текущее время то кеш считается устаревшим, данные берутся из БД, как впрочем, если данных в кеше нет.
если кеш - актуален, то данные берутся из кеша.
что представляет кеш csv файл, в котором символы ';' и '\n' закодиорованны.
Зависимости
PHP от 5.1 и выше
Модуль dbcache зависит от модуля mysqli, модуль mysqli должен быть установлен.
Тестирование:
На Linux Mandrake 10.0 PHP 5.2.0 - замечался SigFault
На Linux Mandrake 10.0 PHP 5.1.4 - стабильно
На FreeBSD 6.0 PHP 5.2.2 - стабильно
Инсталляция.
1. скопировать всю папку dbcache в php-src/ext (не обязательно, папка dbcache может находится и в домашней директории)
2. cd dbcache
3. phpize
4. ./configure
5. make && make install
6. создать директорию для кеша и назначить права на запись
Пример использования:
Ограничения
- размер одного поля не должен превышать 1000 символов, изменяется при компиляции макроопределением #define BUFFSIZE 1024
- не используются BLOB поля
Почему модуль привязан к mysqli?
это связано с тем, что в приложении как правило есть и некешируемые запросы, хотелосьбы использовать одну коннекцию.
Так как модуль mysqli наиболее популярный, то было решено использовать уже открытую коннекцию от туда.
Планируется ли привязка модуля к PDO mysql?
пока нет, так же как и к другим БД, хотя на мой взгляд это не так и сложно.
хочу довести модуль до стабильной версии.
Почему указывается полный путь:
ну, как правило - файловый кеш выносится за приделы httpdoc, даже желательно вынести на другой физический диск.
всегда можно знать полный путь до своего httpdoc.
Чистится ли кеш?
реализована команда инвалидации кеша : $dc->clear($query );
Планы.
в планах привязка к PDO и мемкешу.
где взять пока тут
как работает
берет хеш запроса, который является именем файла. если время последнего update +livetime (sec) менее time() - текущее время то кеш считается устаревшим, данные берутся из БД, как впрочем, если данных в кеше нет.
если кеш - актуален, то данные берутся из кеша.
что представляет кеш csv файл, в котором символы ';' и '\n' закодиорованны.
Зависимости
PHP от 5.1 и выше
Модуль dbcache зависит от модуля mysqli, модуль mysqli должен быть установлен.
Тестирование:
На Linux Mandrake 10.0 PHP 5.2.0 - замечался SigFault
На Linux Mandrake 10.0 PHP 5.1.4 - стабильно
На FreeBSD 6.0 PHP 5.2.2 - стабильно
Инсталляция.
1. скопировать всю папку dbcache в php-src/ext (не обязательно, папка dbcache может находится и в домашней директории)
2. cd dbcache
3. phpize
4. ./configure
5. make && make install
6. создать директорию для кеша и назначить права на запись
Пример использования:
PHP:
$mysqli = new mysqli("localhost", "akalend", "", "test") or die('Connect failed');
$cacheDir = '/home/akalend/cache'; // полный путь до кеш-директории.
$dc = new dbCache( $cacheDir );
$dc->bind( $mysqli ); // привязка к mysqli object
$query="select * from test_data limit 50";
$livetime = 500; // время жизни кеша в секундах
$dc->query($query, $livetime); // выполнение запроса
while( $res = $dc->fetch() ){ // fetching data, возвращает массив строки или false при достижении конца.
print_r($res);
}
print_r( $dc->getInfo() ); // вывод отладочной информации
- размер одного поля не должен превышать 1000 символов, изменяется при компиляции макроопределением #define BUFFSIZE 1024
- не используются BLOB поля
Почему модуль привязан к mysqli?
это связано с тем, что в приложении как правило есть и некешируемые запросы, хотелосьбы использовать одну коннекцию.
Так как модуль mysqli наиболее популярный, то было решено использовать уже открытую коннекцию от туда.
Планируется ли привязка модуля к PDO mysql?
пока нет, так же как и к другим БД, хотя на мой взгляд это не так и сложно.
хочу довести модуль до стабильной версии.
Почему указывается полный путь:
ну, как правило - файловый кеш выносится за приделы httpdoc, даже желательно вынести на другой физический диск.
всегда можно знать полный путь до своего httpdoc.
Чистится ли кеш?
реализована команда инвалидации кеша : $dc->clear($query );
Планы.
в планах привязка к PDO и мемкешу.