【问题标题】:I have a problem with storing large array in Laravel 5.6我在 Laravel 5.6 中存储大型数组时遇到问题
【发布时间】:2019-09-13 08:16:30
【问题描述】:

这是我的问题。

我在 Laravel 会话中存储数组。

session(['array_cache' => $array]);

数组看起来像这样:

数组:59 [▼ 0 => 数组:18 [▼ “身份证” => 2 “类型” => 3 “合作伙伴 ID”=> 1 "用户名" => "Pink11034519" “名字” => “玉” “姓氏” => “Altenwerth” “年龄” => 18 “性别” => “f” “电子邮件” => “brisa12@lubowitz.com” “移动”=>“406-361-6252 x4876” “rank_id” => 3 “状态”=> 1 “头像” => “” "时区" => "美国/安圭拉" “可用” => “7:00-11:30 | 13:00-17:00” "created_at" => "2018-08-28 02:56:26" "updated_at" => "2018-09-12 21:03:50" “枢轴” => 数组:3 [▼ “employee_id”=> 1 “storable_id” => 2 “可存储类型” => “员工” ] ] 1 => 数组:18 [▶] 2 => 数组:18 [▶] 3 => 数组:18 [▶] …… 57 => 数组:18 [▶] 58 => 数组:18 [▶] ]

当我像上面那样存储超过 55 个元素的数组时,会话中断并且我被注销。

如果我减少子数组中的数据量,我可以在会话再次中断之前增加存储的子数组的数量。

所以,看起来尺寸很重要。

Laravel 会话中存储的数组大小是否有限制?

或者问题出在 Laravel 自动序列化?

有人遇到过这样的事情吗?

我很欣赏一些想法。


编辑:这就是发生的事情。

碰巧项目会话存储在数据库中。

“有效负载”列的标准 Laravel 会话表设置是 TEXT,附带:65,535 个字符。

Laravel 序列化和 base64 编码会话有效负载。这会很快吃掉允许的字符。

将存储更改为文件的决定不取决于我,所以我将 TEXT 更改为 MEDIUMTEXT 以增加存储容量,尽管我对存储字符串的潜在大小不太满意。我会写一份备忘录并密切关注它的效果。

【问题讨论】:

  • 你会从stackoverflow.com/a/217443/1578380得到一些细节
  • 你最好明智地使用会话。如果需要从数据库或其他东西中,您可以延迟加载数据,而不是将所有内容存储在会话中。如果需要,在获取最频繁的数据时使用缓存机制来实现速度。
  • PHP 设置中的memory_limit 是什么?
  • Chintan - 谢谢; Tarasowych - 内存限制:2048M; Rahul:是的,它是出于缓存目的,标准缓存似乎不是一种选择,因为数据是基于用户/会话缓存的,但我认为这样看。我想我考虑将这个数组放到一些索引良好的数据库表中,以用一个简单的查询来交换复杂(因此很昂贵)的查询。
  • 我没有答案,但请尝试更改SESSION_DRIVER(文件、数据库、数组...)以查看问题是否仍然存在。它可以帮助您确定问题的根源。

标签: php laravel laravel-5 laravel-session


【解决方案1】:

laravel session 没有限制,你可以从here获得更多关于 session 的信息

【讨论】:

  • 感谢您的宝贵时间。问题是在特定情况下,Laravel 会话因存储更大的数组而中断。
  • 您是否检查过您的 ENV 文件是否设置为 SESSION_DRIVER=file ?
猜你喜欢
  • 2019-09-23
  • 2019-01-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-01
  • 2014-08-11
  • 2019-12-04
  • 1970-01-01
相关资源
最近更新 更多