首页 > 其他 > 详细

laravel的session存储流程及容易遇到的坑

时间:2019-04-10 10:01:53      阅读:222      评论:0      收藏:0      [点我收藏+]

一、laravel的session存储流程及容易遇到的坑

  1、背景


$data = $request->session()->get(‘key2‘);
dump($data);
$request->session()->put(‘key2‘, time());
dd($request->session()->get(‘key2‘));

   执行以上代码你会发现,无论如何刷新效果如下
      技术分享图片
  2、推测:session肯定已启动,不然就是以下报错,经排查发现在全局中间件$middleware也是加载了\Illuminate\Session\Middleware\StartSession::class,也就是session肯定启动了,那就是session存储过程出了问题,
      经排查发现session文件并未生成。

    技术分享图片

    技术分享图片

  3、原因:原来是laravel对session存储流程的一个优化点,laravel为了防止在一次调用controller中session被多次加载,故在laravel中不是每次put都启动一次session,把当前值写入session文件的,这样读写操作会导致IO操作过于频繁,影响性能,laravel框架会在发送响应信息之前保存session。如果在中途出现了dd();die();exit();等提前中止会话的操作,session将无法自动写进文件。
   技术分享图片
  3、解决方案
    (1)把dd();die();exit();等换成return操作。
    (2)放弃自动保存,进行手动保存,在laravel中提供了一个save函数,可进行手动保存操作

二、git版本管理 .gitignore不起作用的解决办法

1、出现的问题

  从服务器克隆下来的项目,在本地修复运行产生了部分缓存文件后,确认可以提交到远程分支了,提交时发现居然把缓存文件也列入了提交的范围了,去.gitignore文件查看,发现缓存文件的目录已经被列入忽略队列,这就说明忽略文件并未生效。

2、问题的原因

  经过对git版本控制的重新认识,发现那些没有生效的目录是因为这些目录或者文件已经被staged,也就是这些文件或者目录已经被列入版本控制管理了,则导致.gitinore文件无效

3、解决的方案

(1)首先去到服务器仓库端,执行


git rm -r --cached .

  清理远程仓库的暂存区

(2)然后再本地执行



git rm -r --cached .
 git add . 
git commit -m ‘update .gitignore‘

  清理本地的暂存区,然后提交

三、ucloud重装系统磁盘问题

1、背景

  在购买服务器后,由于卸载web环境不干净,而服务器是空的服务器,我选择了重装系统来快速重置环境,但是我发现重装系统后,我购买的40G系统硬盘变成了20G,而20G数据盘并没有挂载上去

2、原因

  经和ucloud进行了工单反馈,说ucloud方面重装后会默认重置硬盘到他们的初始状态,也就是20+系统盘,如果需要恢复到购买状态需要自己手动扩容

3、解决

  (1)首先对系统盘进行分区,
    技术分享图片
  选择n,对未挂载出来的空间进行分区
    技术分享图片
  第一步,询问建立分区的号是什么,第二步分区的空间是多大,这里我们选择是没有被挂载上去的空间
最后输入w保存即可
 (2)格式化新建的分区:主流的文件系统有ext4和xfsd,我建立了ext4文件系统,mkfs.ext4 /dev/vdb1
 (3)然后才到ucloud给到的工单流程
    技术分享图片
  这就完成了ucloud重装后扩容的流程。数据盘需要到ucloud平台去挂载后,再进行以上步骤。

  

  

  

?

laravel的session存储流程及容易遇到的坑

原文:https://www.cnblogs.com/spydxk/p/10675481.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!