Laravel 会话与原生 PHP 会话性能差异

Posted

技术标签:

【中文标题】Laravel 会话与原生 PHP 会话性能差异【英文标题】:Laravel Session Vs Native PHP Session Performance Difference 【发布时间】:2015-08-04 02:37:31 【问题描述】:

我正在构建一个 laravel 站点,我刚刚发现 laravel 会话不与本机 php 会话共享。

目前我没有看到任何性能差异,但此站点在完成后会获得大量流量。是否最好尽可能多地使用原生 PHP 东西,或者会话的 laravel 实现是否比 php 更有效?

【问题讨论】:

【参考方案1】:

如果您使用的是 Laravel 4.0,它使用原生 PHP 会话作为其 session driver by default,因此差异可以忽略不计。

从 Laravel 4.1 开始,新的默认会话驱动程序称为 file,它将会话数据存储在磁盘上的文件中,根据their 4.1 release notes,他们的会话现在“更精简、更快”:

改进的会话引擎

在此版本中,我们还引入了一个全新的会话引擎。与路由改进类似,新的会话层更精简、更快。我们不再使用 Symfony(以及 PHP)的会话处理工具,而是使用更简单、更易于维护的自定义解决方案。


或者,您可以使用 Redis 或 memcached 来处理会话 - Laravel has drivers for both out of the box (note: for anything new, you should use Redis rather than memcached)。如果您有大量会话数据(复杂的对象/数据,而不是存储的几个字符串或整数)和/或大量并发用户(10,000+),则可以考虑使用此选项。

这些驱动程序将主要将会话数据存储在内存中而不是磁盘中,因此速度更快、效率更高,尽管性能提升通常可以忽略不计,除非您首先遇到与会话相关的性能瓶颈。如果您确实有如此大的会话数据导致性能问题,那么在重新配置会话引擎之前考虑解决此问题可能是恰当的。

【讨论】:

谢谢。我已经设置了 memcached,但我不想将它用于基本用户会话,因为我希望将会话锁定到每个域。我可以在变量名上附加一些内容以使其特定于域,但标准 php 会话适合我的需要。我只是担心 Laravel 会话可能无法很好地扩展。我正在使用 Laravel 5,所以我认为它会是。我认为编写代码的方式不能让我在未来轻松更改会话类型

以上是关于Laravel 会话与原生 PHP 会话性能差异的主要内容,如果未能解决你的问题,请参考以下文章

redis 与本机会话

与 PHP 共享 Laravel 身份验证/会话

laravel 会话返回 null 尽管设置它

通过 HTTP 请求实例使用会话与在 Laravel 中使用全局会话助手之间的区别

laravel 4.2在重定向时重新生成会话

无法使用 Laravel 4 与子域共享会话