我喜欢这个网站,能够找到我所有问题的答案。
我这里有两个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(..)看起来不可靠?
任何帮助都将不胜感激。
答案 0 :(得分:0)
原来是一个序列化问题。使用Request :: session() - > getId();更改了这两个事务之间$ entry的存储空间。作为关键的一部分。这解决了这个问题。测试显示使用相同的Request :: session()的其他instream事务导致了这个问题。