Laravel在哪里存储memcached会话驱动程序的配置?

时间:2014-09-10 17:18:30

标签: php session laravel laravel-4 memcached

Laravel文档指定您可以在app/config/session.php中启用memcached作为会话处理程序;但是,它没有指定memcached本身的配置位置(例如要使用的服务器)。

我看到您可以在app/config/cache.php中配置memcached,但我不知道它是仅用于缓存驱动程序还是用于会话处理程序。

1 个答案:

答案 0 :(得分:9)

是的,您的缓存驱动程序的app/config/cache.php中的配置也用于会话驱动程序。

看看vendor/laravel/framework/src/Illuminate/Session/SessionManager.php。创建Memcached会话驱动程序实例的方法就是这个

/**
 * Create an instance of the Memcached session driver.
 *
 * @return \Illuminate\Session\Store
 */
protected function createMemcachedDriver()
{
    return $this->createCacheBased('memcached');
}

该方法在同一个文件中调用另一个方法

/**
 * Create an instance of a cache driven driver.
 *
 * @param  string  $driver
 * @return \Illuminate\Session\Store
 */
protected function createCacheBased($driver)
{
    return $this->buildSession($this->createCacheHandler($driver)); //$driver = 'memcached'
}

在同一个文件中调用其他方法

/**
 * Create the cache based session handler instance.
 *
 * @param  string  $driver
 * @return \Illuminate\Session\CacheBasedSessionHandler
 */
protected function createCacheHandler($driver)
{
    $minutes = $this->app['config']['session.lifetime'];

    return new CacheBasedSessionHandler($this->app['cache']->driver($driver), $minutes);
}

在那里你可以看到:this->app['cache']->driver($driver)实际上是从IoC容器中获取缓存驱动程序