Laravel 会话/存储在刷新时为空

Dav*_*son 3 php laravel

我有以下代码:

            echo 'First try: <br />';
            $input = Session::get('input');
            pre($input, false);

            echo 'Second try: <br />';
            Session::put('input', 'test');
            pre(Session::get('input'));
Run Code Online (Sandbox Code Playgroud)

它在第一次加载时给出以下输出:

First try:
Second try:
test
Run Code Online (Sandbox Code Playgroud)

这是第一次预期的,但是当我重新加载页面时,我得到完全相同的输出。所有数据都在刷新后只是丢失。

我知道它不是闪存数据,但我不知道为什么它不存储数据。我在 Windows 上使用基于文件的会话和 Xampp(使用 artisan serve 时也会发生同样的情况)。

存储文件夹是可写的。

编辑:刚刚尝试使用数据库会话,结果相同。而且我直接在路由文件中执行此操作,因此没有其他代码可以将其弄乱。

前置功能:

function pre( $data , $kill = true)
{
    echo '<pre>'.print_r($data,true).'</pre>';
    if($kill){
      exit;
}
Run Code Online (Sandbox Code Playgroud)

cee*_*yoz 5

Laravel 的会话数据是作为响应关闭过程的一部分写入的。这是出于效率原因 - 如果您要Session::put在一个请求中进行数十次调用,最好一次批量进行。

因此,如果您不使用类似View::makeResponse::json或您拥有的东西而改为exitor引起响应,die则不会写入会话数据,因为您缩短了响应生命周期。