【问题标题】:What is the purpose of creating table for Laravel Session?为 Laravel Session 创建表的目的是什么?
【发布时间】:2019-08-06 06:21:37
【问题描述】:

我很困惑为什么它是先决条件为会话创建基于documentation 的数据库表,而会话可以在没有它的情况下工作(db 表)。

谁能给我解释一下,

  1. 我可以直接session(['key' => 'value']);不用表,为什么还要为session创建数据库表(基于documentation)?
  2. 有一个东西叫Redis。什么目的?以及如何使用(我已经installed)?

  3. user_idip_addressuser_agentpayloadlast_activity 等字段的用途是什么?这些如何有用?

【问题讨论】:

  • 文件驱动程序便于开发和测试,但不是生产的最佳解决方案,即使在中等流量的网站中也会出现问题。
  • @dparoli 现在我知道了。 redis的配置对我来说相当困难。我将使用数据库。
  • 数据库驱动适合生产

标签: laravel laravel-5.8 laravel-session


【解决方案1】:

数据库和redis只是用来存储session的驱动。默认情况下,laravel 使用 file 驱动程序,这意味着您仍然可以使用 session(['key' => 'value']); 并将其存储在文件中。

如果你选择使用数据库,那么你需要创建 Laravel 用来存储这些值的表。

Redis 也是一个完全独立的驱动程序,这里是它的 wiki:

Redis 是一个内存数据结构项目,实现了具有可选持久性的分布式内存键值数据库。

因此,总而言之,您应该根据自己的需要选择使用哪个驱动程序。

【讨论】:

    【解决方案2】:

    我从未在数据库中使用过session,所以我无法回答您的所有问题。我想每个人都会以不同的方式或用法看到/使用这张表。

    1. 数据库表session 不是必需的。默认情况下,它使用file 存储。使用数据库表允许您管理用户会话,(我想)在服务器之间共享它们...
    2. Redis 类似于数据库,但复杂性较低。它只是一堆key => value,所有东西都存储在内存中。它允许您的应用程序以极快的速度存储和检索数据。您还需要安装 redis-server 并在生产中启动 deamon 或在开发时启动 worker 以使其工作。
    3. 它们可能只不过是提供方便使用的信息(统计信息、日志等...)

    【讨论】:

      【解决方案3】:

      除了最后一个之外的所有答案都在文档中。

      1. 数据库表仅在使用database 驱动程序进行会话时使用。如果您没有更改驱动程序,则使用文件存储,并且不需要数据库表。

      2. Redis 是一种内存数据存储,可用于存储会话信息并可以非常快速地访问它。 Predis 是一个 php 驱动,可以用来连接 Redis 存储,但是你仍然需要在你的服务器上安装 Redis。

      3. 这些字段用于识别用户并将会话有效负载链接到他们。

      【讨论】:

        【解决方案4】:

        我们需要将会话驱动更改为数据库或 Redis。

        它基于我们的要求,就像我使用 Heroku 服务器进行部署一样,每 30 分钟不活动后,Heroku 的免费 dyno 睡眠。而且 Heroku 不允许我们存储本地文件,它会每天自动刷新一次构建。所以,在这种情况下,我们不能为会话使用本地文件驱动程序,我们必须将会话驱动程序更改为数据库或 Redis。

        我正在使用 Redis 作为我的应用程序的会话驱动程序。

        【讨论】:

          猜你喜欢
          • 2017-12-16
          • 2014-04-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-06-05
          • 2018-11-29
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多