【问题标题】:Where does Laravel store configuration for memcached session driver?Laravel 在哪里存储 memcached 会话驱动程序的配置?
【发布时间】:2014-11-04 10:52:34
【问题描述】:
Laravel 文档指定您可以在 app/config/session.php 中启用 memcached 作为会话处理程序;但是,它没有指定 memcached 本身的配置位置(例如要使用的服务器)。
我看到您可以在app/config/cache.php 中配置 memcached,但我不知道它是否仅用于缓存驱动程序或会话处理程序。
【问题讨论】:
标签:
php
session
laravel
laravel-4
memcached
【解决方案1】:
是的,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 容器中获取您的缓存驱动程序