session - Laravel 的 Artisan 从哪里获取 session 配置信息?

标签 session caching laravel memcached ratchet

我的 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/

相关文章:

php - 在 Javascript 中使用存储在 $_GET/$_SESSION 中的值

session - 如何为 Grails 应用程序配置 session 超时?

php - 用 PHP 或 JavaScript 处理的大数组

c - C 中 open(...O_DIRECT) 的可移植性?

mysql - 创建通知表时 Laravel "Specified key was too long"

php - 如果 redis 关闭,则默认为 Laravel 文件缓存

php - 如何格式化括号部分中的 session 变量

django - 如何判断 Django session 是否是新 session ?

c++ - 尝试访问二维 vector 元素时出现段错误

php - 在 laravel 外观上使用依赖注入(inject)