#cakephp #memcached
#cakephp #memcached
Вопрос:
Я совсем новичок в cakephp, и у меня возникли проблемы с настройкой его для работы на моем реальном сервере. Он отлично работает на моем локальном компьютере.
Я думаю, проблема в том, что мой живой сервер настроен на использование Memcache. Когда я захожу на живой сайт, я получаю:
Warning (2): session_start() [function.session-start]: open(=1amp;retry;_interval=15/sess_mt8tpui04vorqojg7s945e5sf5, O_RDWR) failed: No such file or directory (2) [CORE/Cake/Model/Datasource/CakeSession.php, line 615]
Warning (2): session_write_close() [function.session-write-close]: open(=1amp;retry;_interval=15/sess_mt8tpui04vorqojg7s945e5sf5, O_RDWR) failed: No such file or directory (2) [CORE/Cake/Controller/Controller.php, line 712]
Warning (2): session_write_close() [function.session-write-close]: Failed to write session data (files). Please verify that the current setting of session.save_path is correct (tcp://127.0.0.1:11211?persistent=1amp;weight;=1amp;timeout;=1amp;retry;_interval=15) [CORE/Cake/Controller/Controller.php, line 712]
Итак, я попытался включить cake для использования memcache, добавив следующее в app/Config/core.php:
Cache::config('default', array(
'engine' => 'Memcache'
));
Но я все равно получаю ту же ошибку.
Php.ini настроен на правильное использование memcache.
Есть идеи?
Спасибо
Ответ №1:
Ваш Cache::config выглядит неполным!
Это должно выглядеть так, и этот блок кода будет в app/Config/bootstrap.php
Cache::config('default', array(
'engine' => 'Memcache', //[required]
'duration' => 3600, //[optional]
'probability' => 100, //[optional]
'prefix' => Inflector::slug(APP_DIR) . '_', //[optional] prefix every cache file with this string
'servers' => array(
'127.0.0.1:11211' // localhost, default port 11211
), //[optional]
'persistent' => true, // [optional] set this to false for non-persistent connections
'compress' => false, // [optional] compress data in Memcache (slower, but uses less memory)
));
Также вам необходимо установить обработчик сеанса http://book.cakephp.org/2.0/en/development/sessions.html#cache-sessions
Мой выглядит так, обратите внимание, что я вызвал «сеансы«, и этот блок кода будет в app/Config/core.php
Configure::write('Session', array(
'defaults' => 'cache',
'handler' => array(
'config' => 'sessiones'
),
'cookie' => 'PHPSESSID',
'timeout' => 3600,
'cookieTimeout' => 0,
'autoRegenerate' => false,
'checkAgent' => true,
'ini' => array(
'session.cookie_secure' => false,
'session.cookie_httponly' => true,
)
));
А затем настройте Cache:config для обработчика «sessiones»
, и этот блок кода будет в app/Config/bootstrap.php
Cache::config('sessiones', array('engine' => 'Memcache','duration'=> 3600,/*'prefix' =>'es',*/ 'servers' => array(array('127.0.0.1:11211'), 'compress' => false));
Комментарии:
1.
'persistent' => true
каково его точное использование? Указывает ли memcached не удалять ключ по истечении срока действия?