sulman
sulman

Reputation: 2461

cakephp - use memcache for sessions

I am quite new to cakephp and I'm having trouble getting it configured to work on my live server. It works fine on my local machine.

I think the problem is that my live server is configured to use Memcache. When I visit the live site I get:

Warning (2): session_start() [function.session-start]: open(=1&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(=1&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=1&weight;=1&timeout;=1&retry;_interval=15) [CORE/Cake/Controller/Controller.php, line 712]

So i've tried enabling cake to use memcache by adding the following to app/Config/core.php:

Cache::config('default', array(
    'engine' => 'Memcache'
));

But I still get the same error.

The php.ini is configured to use memcache correctly.

Any ideas?

Thanks

Upvotes: 1

Views: 4460

Answers (1)

Pedro
Pedro

Reputation: 691

Your Cache::config looks incomplete!

It should look like this and This code block will be in 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)
  ));

Also you need to set a session handler http://book.cakephp.org/2.0/en/development/sessions.html#cache-sessions

Mine looks like this, note that I have called "sessiones" & This code block will be in 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,
        )
    ));

And then set up the Cache:config for the handler "sessiones" and This code block will be in app/Config/bootstrap.php

Cache::config('sessiones', array('engine' => 'Memcache','duration'=> 3600,/*'prefix' =>'es',*/ 'servers' => array(array('127.0.0.1:11211'), 'compress' => false));

Upvotes: 4

Related Questions