【问题标题】:Where does Laravel's Artisan get session config info from?Laravel 的 Artisan 从哪里获取会话配置信息?
【发布时间】:2014-10-20 01:25:20
【问题描述】:

我的会话配置文件说要使用 memcached,但所有工匠命令都在加载“数组”驱动程序。我正在用 Ratchet 编写一个 Web 套接字应用程序,需要连接到 Memcached 以获取用户的会话信息,但似乎忽略了我的配置。

Laravel 在哪里以及如何确定用于 Artisan 命令的会话驱动程序?

【问题讨论】:

  • 运行artisan时需要指定环境变量--env。查看文档以获取更多信息laravel.com/docs/artisan
  • @TheShiftExchange 我在命令中运行了App::environment(),它显示“本地”,这与我的应用程序的其余部分相同,所以我怀疑就是这样。
  • 嗯...在这种情况下,我想知道 artisan 命令是否被硬编码为使用数组会话 - 因为您通常不希望通过 artisan 访问会话...
  • @TheShiftExchange 不确定……那会很奇怪。我应该能够告诉它要加载什么。
  • 也许吧。但是通常您永远不会在 Artisan 中使用会话。重点是运行一次性命令——而不是交互或维护会话信息。

标签: session caching laravel memcached ratchet


【解决方案1】:

根据Illuminate\Support\ServiceProvider\SessionServiceProvider::setupDefaultDriver(),如果在控制台中运行,Laravel 会将会话驱动设置为数组。
您可以通过注册您的自定义服务提供商轻松地覆盖它。创建自定义服务提供者,扩展默认会话服务提供者并覆盖方法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 应用相同的会话存储。

由于您尝试将会话附加到 Ratchet,您可以直接将此会话实例注入 Ratchet 应用程序:

$session = new \Ratchet\Session\SessionProvider(
    new MyCustomRatchetApp(),
    $this->getLaravel()['session.store']
);

$server = new \Ratchet\App('localhost');
$server->route('/sessDemo', $session);
$server->run();

【讨论】:

    【解决方案2】:

    Gufran 发布了一个很好的答案,但另一个解决方案不涉及更换服务提供商,它只是在您的工匠命令(或测试)中手动设置默认驱动程序。

    像这样:Session::setDefaultDriver('memcached');。您可以对缓存执行相同的操作:Cache::setDefaultDriver('memcached');。当然,您在执行任何其他命令之前执行此操作,这样它就不会开始使用数组。

    如果需要,可以手动输入连接信息:Config::set('cache.memcached', array(array('host' =&gt; '127.0.0.1', 'port' =&gt; 12345, 'weight' =&gt; 100)));

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-03
      • 1970-01-01
      • 1970-01-01
      • 2016-04-29
      • 2014-11-04
      • 1970-01-01
      相关资源
      最近更新 更多