laravel的session存储流程及容易遇到的坑、git版本管理 .gitignore不起作用的解决办法、ucloud重装系统磁盘问题

一、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平台去挂载后,再进行以上步骤。

  

  

  

posted @ 2019-04-10 09:53  苏沛云  阅读(644)  评论(0编辑  收藏  举报


感谢您的阅读,如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮。本文欢迎各位转载,但是转载文章之后必须在文章页面中给出作者和原文连接