Laravel 5 Session不能可靠地持久化

时间:2016-01-27 17:33:20

标签: php laravel session transactions

我喜欢这个网站,能够找到我所有问题的答案。

我这里有两个Ajax事务处理过程,在第一个事务中,输入的值被放入Session,第二个事务检索输入的值和先前的事务值,以便知道如何继续。这个陈述似乎不可靠,但它比90%的时间都好。为什么不可靠?事务成功完成,屏幕显示格式正确。

Session::put('previous', serialize($entry));

交易示例A; 用户扫描物品UPC,交易将UPC 0587识别为正确,创建$条目,并回复用户“请将0587放入手提包3334”

$entry = (object) ['type' => 'UPC', 'text' => '0587'];
Session::put('previous', serialize($entry));

事务B示例; 用户扫描手提包,交易将手提包3334识别为正确,然后请求先前的交易条目

$previous = (object) unserialize(Session::get('previous', self::UNKNOWN_SERIAL));

超过90%的时间$ previous等于我们想要的(UPC,0587)。有时$ previous等于事务A之前的先前事务的值。$ previous在登录后的第一个事务上等于self :: UNKNOWN_SERIAL。

为什么Session :: put(..)看起来不可靠?

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:0)

原来是一个序列化问题。使用Request :: session() - > getId();更改了这两个事务之间$ entry的存储空间。作为关键的一部分。这解决了这个问题。测试显示使用相同的Request :: session()的其他instream事务导致了这个问题。