Поддерживает ли CakePHP APC, XCache и другие приложения?
Поддерживает ли CakePHP APC, XCache и другие приложения?
5 answers
В cake /app/config/core.php
есть несколько вариантов настройки механизмов кэширования (версия новее 1.2). например
APC (http://pecl.php.net/package/APC)
Cache::config('default', array(
'engine' => 'Apc', //[required]
'duration'=> 3600, //[optional]
'probability'=> 100, //[optional]
'prefix' => Inflector::slug(APP_DIR) . '_', //[optional] prefix every cache file with this string
));
Он должен поддерживать APC в качестве кэша кода операции - в конце концов, это всего лишь PHP-код.
И, похоже, существует класс, связанный с APC, для использования APC в качестве кэша для данных: см. ApcEngine
.
Смотрите также в руководстве: 7.2.2 Механизмы кэширования в Cake, в котором говорится, что есть поддержка APC, XCache, File и memcached.
Просто чтобы добавить к другим хорошим ответам, уже предоставленным, есть несколько трюков, чтобы заставить cake использовать что-либо, кроме файлового кэша, для внутреннего кэширования. Этот код заставит cake использовать APC, Xcache, что угодно для своего основного кэша (APC в этом примере)
Cache::config('_cake_core_',
array(
'engine' => 'Apc',
'duration'=> 3600,
'probability'=> 100,
)
);
Cake также может кэшировать ваши модели, поместив это в ваши контроллеры/appcontroller.
var $persistModel = true;
Однако модели могут использовать только файловый кэш
Все это было украдено из этой статьи, которая включает в себя кучу способы использования механизмов кэширования cake для ускорения работы вашего приложения
Http://www.pseudocoder.com/archives/8-ways-to-speed-up-cakephp-apps
Кроме того, как упоминал Паскаль, при установке и настройке APC ваш код операции PHP автоматически кэшируется.
Для еще большего удобства кэширования php поддерживает memcache в качестве альтернативы файлам в качестве хранилища сеансов, что особенно полезно в средах с балансировкой нагрузки. Примером реализации одного сервера может быть поместите это в свой ini
extension=memcache.so
session.save_handler = memcache
session.save_path = "tcp://127.0.0.1:11211?persistent=1"
И это в вашем core.php
Configure::write('Session.save', 'php');
В CakePHP 2.0 Apc автоматически определяется и устанавливается. В вашем core.php вы можете найти:
$engine = 'File';
if (extension_loaded('apc') && function_exists('apc_dec') && (php_sapi_name() !== 'cli' || ini_get('apc.enable_cli'))) {
$engine = 'Apc';
}
Обратите внимание, что после CakePHP 2.2 автоматическое обнаружение APC отключено.
В 2.2.1 использовался APC, если обнаружено: https://github.com/cakephp/cakephp/blob/2.2.1/app/Config/core.php
Начиная с 2.3 движок по умолчанию - "Файл". Последняя стабильная /app/Config/core.php
https://github.com/cakephp/cakephp/blob/2.4.4/app/Config/core.php#L352
Начиная с 2.4.4 они поддерживаются
- Файл двигатель
- APC
- Винкаш
- XCache
- Кэш памяти
- Редис
Документация: http://book.cakephp.org/2.0/en/core-libraries/caching.html#caching
Кэш файлов Filecache - это простой кэш, в котором используются локальные файлы. Это самый медленный механизм кэширования, и он не предоставляет столько функций для атомарных операций. Однако, поскольку дисковое хранилище часто довольно дешевое, хранение больших объектов или элементов, которые редко написанные хорошо работают в файлах. Это механизм кэширования по умолчанию для 2.3+
Кэш APCCACHE APC использует расширение PHP APC. Это расширение использует общую память на веб-сервере для хранения объектов. Это делает его очень быстрым и способным предоставлять атомарные функции чтения/записи. По умолчанию CakePHP в 2.0-2.2 будет использовать этот механизм кэширования, если он доступен.
Wincache Wincache использует расширение Wincache. Wincache аналогичен APC по функциям и производительности, но оптимизирован для Windows и IIS.
Xcacheengine Xcache - это расширение PHP, которое предоставляет функции, аналогичные APC.
Memcacheengine Использует расширение Memcache. Memcache обеспечивает очень быструю систему кэширования, которая может быть распределена по многим серверам, и обеспечивает атомарные операции.
Redisengine Использует расширение phpredis. Redis обеспечивает быструю и постоянную систему кэширования, аналогичную memcached, а также обеспечивает атомарную операции.
Если вам интересно, какой из них использовать. Проверьте состояние их разработки.
- APC: Последняя стабильная версия: 3.1.9, 14 мая 2011 года, http://pecl.php.net/package/apc
- Wincache: 1.3.5, 13 сентября 2013, http://sourceforge.net/projects/wincache/files /
- XCache: 3.1.0, 10 октября 2013, http://xcache .lighttpd.net /
- Memcache: 2.2.7, 22 сентября 2012 г., http://pecl.php.net/package/memcache
- Редис: 2.8.4, 13 января 2014, http://redis.io/download