我的 session 配置文件说要使用 memcached,但所有 artisan 命令都在加载“array”驱动程序。我正在用 Ratchet 编写一个 web sockets 应用程序,需要连接到 Memcached 来获取用户的 session 信息,但似乎忽略了我的配置。
Laravel 在哪里以及如何确定哪些 session 驱动程序用于 Artisan 命令?
最佳答案
根据 Illuminate\Support\ServiceProvider\SessionServiceProvider::setupDefaultDriver()
如果在控制台中运行,Laravel 会将 session 驱动程序设置为数组。
您可以通过注册您的自定义服务提供商轻松地覆盖它。创建自定义服务提供者,扩展默认 session 服务提供者并覆盖方法 setupDefaultDriver)
.例如,这是我的自定义服务提供商:
<?php namespace App\Console;
use Illuminate\Session\SessionServiceProvider as DefaultSessionProvider;
class SessionServiceProvider extends DefaultSessionProvider
{
protected function setupDefaultDriver() {}
}
然后打开
config/app.php
并替换 'Illuminate\Session\SessionServiceProvider'
与 'App\Console\SessionServiceProvider'
.现在 artisan 也将使用与 Laravel 应用程序相同的 session 存储。
由于您尝试将 session 附加到 Ratchet,您可以直接将此 session 实例注入(inject) Ratchet 应用程序:
$session = new \Ratchet\Session\SessionProvider(
new MyCustomRatchetApp(),
$this->getLaravel()['session.store']
);
$server = new \Ratchet\App('localhost');
$server->route('/sessDemo', $session);
$server->run();
关于session - Laravel 的 Artisan 从哪里获取 session 配置信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25510571/