【发布时间】: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