1

我正在使用以下行重定向到捆绑包中的基本索引操作:

return Redirect::to_action('mybundle::base@index')->with("prevCommands", $prevCommands)->with("result", $result)->with_input();

重定向有效,但是当我从 Session 中获取信息时,我随机获得空值,以下代码在我的索引操作中:

$view['prevCommands']  = (array)Session::get('prevCommands');
$view['result']        = (string)Session::get('result');

上面的组合似乎只是随机工作,如果服务器需要更长的响应时间,它往往会更好地工作。在重定向之前,我检查了变量是否始终正确填充。

当它发生时,两个值都会立即返回为 null。从来没有只设置其中一个的情况。

4

2 回答 2

8

听起来您正在使用 cookie 会话驱动程序,并且空间不足。我建议更改为任何其他驱动程序(“内存”除外)。

Laravel 3 提供了许多会话驱动程序。'cookie' 是默认驱动程序,因为它需要零设置,但它的大小限制为 4K。对于更严重的事情,您应该考虑使用不同的驱动程序。为了便于设置...

  • file将每个会话保存为 storage/sessions 中的文件,因此您需要确保此位置是可写的,并且如果您在共享服务器上,则它具有适当的权限。
  • 数据库在您的默认数据库连接中使用表,文档描述了必要的模式。
  • memcachedredis使用各自的服务,一旦您安装并运行服务,它们不需要太多设置。

值得一提的是内存驱动程序,这仅对测试有用,因为数据不是持久的(在请求结束时丢失)。

于 2013-04-23T15:34:35.423 回答
1

没关系,我想通了,当我注意到 Laravel 3 中 Sessions 的 cookie 驱动程序实际上并没有使用 PHP 内置的 Cookie Session 机制时,它开始变得有意义,它实际上将整个有效负载存储在一个 cookie 中。

由于 cookie 的大小允许有限,如果存储的总数据超过 4K,则此机制会中断,请记住用于在会话中存储实际数组的所有“填充”字符。

这也让我意识到我的应用程序的设计是错误的,我不应该将如此大量的数据闪存到会话中。

于 2013-04-23T14:40:54.207 回答