Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
PHP для продвинутых.docx
Скачиваний:
16
Добавлен:
01.07.2025
Размер:
12.54 Mб
Скачать

25. Модуль кэширования

Так выглядит обработка сценария на PHP обычным интерпретатором:

  1. Чтение файла

  2. Генерация байткода

  3. Выполнение кода

  4. Выдача результата

При этом процесс генерации байткода выполняется каждый раз и отнимает большую часть времени обработки сценария.

Для обхода этого узкого места были разработаны акселераторы PHP — модули, кэширующие скомпилированный байт-код в памяти и/или на диске и в разы увеличивающие производительность PHP.

У класса Route есть специальный метод cache(), который позволяет закэшировать роуты, т.е. записать в папку cache. После того как роуты закэшированы, запрос из адресной строки не генерирует на контроллеры и экшны на лету, а вызывает файл из кэша.

Кэширование роутов. Листинг 25.1

if( ! Route::cache() {

Route::set(‘default’, ‘(<controller>(/<action>(/<id>)))’)

->defaults(array(

‘controller’ =>‘welcome’,

‘action’ =>‘index’,

));

Route::set(‘sections’, ‘<directory>(/<controller>(/<action>(/<id>)))’,

array(

‘directory’ =>‘(lessons)’

))

->defaults(array(

‘controller’ =>‘menu’,

‘action’ =>‘index’,

));

Route::cach(TRUE);

}

В kohana также имеется отдельный модуль cache. Для его подключения необходимо раскомментировать нужную строку в файле bootstrap.Php

Подключение модуля кэширования. Листинг 25.2

Kohana::modules(array(

'cache' =>MODPATH.'cache',

));

После подключения модуля необходимо скопировать из папки с модулем конфигурационный файл и переместить его в папку config/ в конфигурационном файле cache.Php имеется несколько групп настроек.

Группы настроек конфигурационного файла cache.php. Листинг 25.3

<?php defined('SYSPATH') or die('No direct script access.');

return array

(

'memcache' => array(

'driver' => 'memcache',

'default_expire' => 3600,

'compression' => FALSE, // Use Zlib compression (can cause issues with integers)

'servers' => array(

array(

'host' => 'localhost', // Memcache Server

'port' => 11211, // Memcache port number

'persistent' => FALSE, // Persistent connection

'weight' => 1,

'timeout' => 1,

'retry_interval' => 15,

'status' => TRUE,

),

),

'instant_death' => TRUE, // Take server offline immediately on first fail (no retry)

),

'memcachetag' => array(

'driver' => 'memcachetag',

'default_expire' => 3600,

'compression' => FALSE, // Use Zlib compression (can cause issues with integers)

'servers' => array(

array(

'host' => 'localhost', // Memcache Server

'port' => 11211, // Memcache port number

'persistent' => FALSE, // Persistent connection

'weight' => 1,

'timeout' => 1,

'retry_interval' => 15,

'status' => TRUE,

),

),

'instant_death' => TRUE,

),

'apc' => array(

'driver' => 'apc',

'default_expire' => 3600,

),

'wincache' => array(

'driver' => 'wincache',

'default_expire' => 3600,

),

'sqlite' => array(

'driver' => 'sqlite',

'default_expire' => 3600,

'database' => APPPATH.'cache/kohana-cache.sql3',

'schema' => 'CREATE TABLE caches(id VARCHAR(127) PRIMARY KEY, tags VARCHAR(255), expiration INTEGER, cache TEXT)',

),

'eaccelerator' => array(

'driver' => 'eaccelerator',

),

'file' => array(

'driver' => 'file',

'cache_dir' => APPPATH.'cache',

'default_expire' => 3600,

'ignore_on_delete' => array(

'.gitignore',

'.git',

'.svn'

)

)

);

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]