Php 即使应用程序处于活动状态并且人们正在处理它,会话也会结束

Php 即使应用程序处于活动状态并且人们正在处理它,会话也会结束,php,ajax,symfony,session,symfony-security,Php,Ajax,Symfony,Session,Symfony Security,我正在处理的一个应用程序出现了一个“奇怪”的问题,到目前为止,我找不到解决方法。该应用程序使用Symfony2.6.x并依赖于几个Ajax调用。所有时间请求都是通过Ajax发出的。所以,当我登录到应用程序(使用FOSUserBundle)时,Symfony会自动启动一个新会话,对吗?好的,从那一刻起,直到在会话生存期的config.yml(见下面的配置)中定义的时间,应用程序仍在工作,但在某个时刻,我被重定向到登录页面,并且会话被关闭,即使我正在积极使用该应用程序。我最好的方法是在Symfony

我正在处理的一个应用程序出现了一个“奇怪”的问题,到目前为止,我找不到解决方法。该应用程序使用Symfony2.6.x并依赖于几个Ajax调用。所有时间请求都是通过Ajax发出的。所以,当我登录到应用程序(使用FOSUserBundle)时,Symfony会自动启动一个新会话,对吗?好的,从那一刻起,直到在会话生存期的
config.yml
(见下面的配置)中定义的时间,应用程序仍在工作,但在某个时刻,我被重定向到登录页面,并且会话被关闭,即使我正在积极使用该应用程序。我最好的方法是在Symfony或PHP中,在会话的生命周期中不考虑AJAX调用,对吗

对于这个问题,我最好的方法和解决方案,不知道我是否正确,也没有尝试过,我想听听SO中一些人的意见,就是在每次进行AJAX调用时重新生成会话ID(在当前活动会话上调用
migrate()
),这样会话将保持活动状态,这种方法正确吗?有什么建议吗

这是我在config.yml中对会话部分的配置:

config.yml

framework:
    session:
        # session will expire after 10 minutes of inactivity 
        handler_id:  ~
        cookie_lifetime: 2400 
        gc_maxlifetime: 600 # session will expire after 10 minutes of inactivity
        gc_probability: 0
        gc_divisor: 100
注意:和《从我这里来》基本上是一样的,但我仍然没有解决这个问题,它正在扼杀我的应用程序和我的大脑,试图找到解决方案

问题:
-你远程工作吗?如果是这样的话,您的终端更改是立即自动保存在服务器上,还是需要手动保存才能运行?
-您是否对实际会话的长度进行了计时(从登录到被切断)?时间长度相同吗?
客人估计:
如果没有上述内容,我认为您的问题在于会话到期设置的设置,并且可能在线路的某个位置(在您和服务器之间)发生了触发会话重置的事件。[您是否尝试在打开两个窗口的情况下工作?您知道,先登录,然后在另一个窗口中工作,但保持登录后的窗口打开…]
如果是因为短会话设置,请尝试以下操作:
php_value session.cookie_生存期0
php_value session.gc_maxlifetime 60000

这会给你足够的会话时间,或者直到你关闭浏览器/切断连接…

远程工作是什么意思?我不明白你的回答。至于第二个答案,不,我没有,但如果会话到期时间设置为10分钟,我在页面上工作超过15分钟,为什么它会关闭?这是我关心的。我需要做的很简单:如果用户没有在应用程序中工作,导致他/她退出或只是离开窗口|浏览器打开并离开,那么当这种情况发生时,时间计数为10分钟,应用程序应结束(进入登录屏幕),否则应保持正常工作。我尝试了几个会话到期设置,但都没有成功,所以我不认为soAre会让你在机器上工作,或者你正在隧道中工作?这就是我要问的…啊,是的,我有一个运行CentOS的虚拟机,它与Windows主机时间和日期同步,所以站点在虚拟机上,这回答了你的问题?因为登录界面弹出,这意味着你有一个触发它的事件!它必须是某种计时器。通过计时工作会话的活动时间,您应该获得相同的时间量。然后,只需仔细阅读服务器上的配置代码就可以找到相同的Xamount,这就是您的触发器!!!是的,我有一个触发器,每13分钟询问一次会话是否处于活动状态,但是,如果我在站点上工作,为什么会话会关闭?