使用PHP中的Ajax使会话保持活动状态

时间:2019-03-03 17:29:04

标签: php session

我有一个PHP应用程序,无论服务器设置如何,我都希望会话保持活动状态。我进行了如下ajax调用,以便在一定间隔内通过ajax调用服务器...

 <script type="text/javascript">
            jQuery(document).ready(function(){
                var refresh_session = function(){
                    var refresh_interval = 180000;
                    setTimeout(function(){
                        jQuery.ajax({
                            url: 'refresh-session.php',
                            cache: false,
                            success: function(){
                                refresh_session();
                            }
                        });
                    }, refresh_interval);
                }
                refresh_session();
            });
        </script>

在服务器中,我有此代码...

 <?php
  @session_start();
  $_SESSION['last_refreshed_time'] = time();
  echo date('Y-m-d H:i a', $_SESSION['last_refreshed_time']).' - '.session_id();
 ?>

我看到在指定的时间间隔进行了ajax调用,并且我可以在每个ajax输出上看到相同的会话ID。但是,如果我在30分钟后刷新,页面仍会注销。。。有人可以告诉我为什么即使在几分钟之内进行服务器呼叫,在这种情况下会话仍无法正常运行吗?

1 个答案:

答案 0 :(得分:0)

如果服务器会话超时为30分钟,则意味着1800段,这意味着脚本中的时间为180000微秒,但是执行该脚本时,会话已过期。您必须在会话终止之前刷新会话。尝试将值更改为1790段或179000微秒,以便您有10秒的时间执行ajax并刷新会话。

将此变量更新为179000

var refresh_interval = 179000;