Php Laravel 5会话无法可靠地持续

Php Laravel 5会话无法可靠地持续,php,laravel,session,transactions,Php,Laravel,Session,Transactions,我喜欢这个网站,到现在为止我能找到我所有问题的答案 我这里有一个两个Ajax事务流程,在第一个事务中,输入的值被放入会话中,第二个事务检索输入的值和以前的事务值,以便知道如何进行。这种说法似乎不可靠,但在90%的情况下效果更好。为什么它不可靠?事务成功完成,屏幕显示格式正确 Session::put('previous', serialize($entry)); 交易A示例; 用户扫描商品UPC,事务将UPC 0587标识为正确,创建$entry,并回复用户“请将0587放入手提包3334”

我喜欢这个网站,到现在为止我能找到我所有问题的答案

我这里有一个两个Ajax事务流程,在第一个事务中,输入的值被放入会话中,第二个事务检索输入的值和以前的事务值,以便知道如何进行。这种说法似乎不可靠,但在90%的情况下效果更好。为什么它不可靠?事务成功完成,屏幕显示格式正确

Session::put('previous', serialize($entry));
交易A示例; 用户扫描商品UPC,事务将UPC 0587标识为正确,创建$entry,并回复用户“请将0587放入手提包3334”

示例事务B; 用户扫描tote,事务将tote 3334标识为正确,然后请求上一个事务条目

$previous = (object) unserialize(Session::get('previous', self::UNKNOWN_SERIAL));
超过90%的时间$previous等于我们想要的(UPC,0587)。有时$previous等于事务a之前的上一个事务中的值。$previous等于登录后第一个事务中的self::UNKNOWN_SERIAL

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


任何帮助都将不胜感激。

事实证明这是一个序列化问题。使用Request::session()->getId()更改了这两个事务之间$entry的存储;作为钥匙的一部分。这就解决了问题。测试表明,使用相同Request::session()的其他流内事务导致了此问题

你能分享一些关于A)你的服务器基础设施和B)你正在使用的会话驱动程序的细节吗?是的,上面的例子发生在我的开发网站Ubuntu 14.04.2 LTS上,服务器版本:Apache/2.4.7(Ubuntu)。至于会话驱动程序,在.env Session\u driver=file中,在config/Session.php'driver'=>env('Session\u driver','file'),'life'=>120,'expire\u on\u close'=>true,'encrypt'=>false,是的,在我的开发环境中,一台服务器。在生产环境中,多台服务器,我们有.env SESSION\u DRIVER=database来跨服务器启用相同的会话数据。我认为您可能希望在两个env中使用相同的驱动程序,这样您只会调试会影响生产的问题。如果您在dev中切换到DB会话,这个问题甚至可能消失。
$previous = (object) unserialize(Session::get('previous', self::UNKNOWN_SERIAL));