[db表在会话超时> 30分钟时未更新db表

问题描述 投票:0回答:1

如标题中所述,当我设置[php中30分钟的会话超时]时,我的数据库表trace_users没有得到更新,尽管会话超时为6分钟时]表已更新。

以下代码(JS和PHP)

位于同一php文件mno.php中。
<?php    
if (isset($_GET['action']) && $_GET['action'] == "logout")
{
    session_destroy(); // destroy session data in storage
    !isset($_SESSION['pageadmin']);
    $open = "false";
    $write = "0";
    $stmt = $connect->prepare("UPDATE trace_users SET open=?, write=? WHERE user_name=?");
    $usname = !empty($_SESSION['user_name']) ? $_SESSION['user_name'] : '';
    $stmt->bind_param('sss', $open, $write, $usname);
    $stmt->execute();
}
?>
<script>
    jQuery(document).ready(function($) {

        let lastActivity = <?php echo time(); ?> ;

        let now = <?php echo time(); ?> ;

        let logoutAfter = 10;

        let timer = setInterval(function() {
            now++;
            let delta = now - lastActivity;
            console.log(delta);
            if (delta > logoutAfter) {
                clearInterval(timer);
                //DO AJAX REQUEST TO close.php
                $.ajax({
                    url: "/abc/mno.php",
                    type: 'GET',
                    data: {
                        action: 'logout'
                    }, // Line A
                    success: function(data) {
                        console.log(data); // Line B
                    },
                    error: function(jqXHR, textStatus, errorThrown) {
                        alert(textStatus);
                    }
                });
            }
        }, 1000);
    }); 
</script>

问题陈述:

我想知道我应该在上面的代码中进行哪些更改,以便当我将会话超时设置为30分钟(1800秒)时,db表也应该更新]。

在设置1800秒会话超时时,页面会注销,但是db表不会更新。

Case1(不起作用):

1800秒(页面注销,db不更新Case2(正在运行): 360秒(页面注销,数据库已更新

session.gc_maxlifetime内部的值为1440(本地值)1440(主值)

这是我调试过的内容:

在网络选项卡上,将会话超时设置为6分钟60分钟

时,我正在获取请求方法GET

如标题中所述,当我在php中将会话超时设置为30分钟时,我的数据库表trace_users不会得到更新,尽管在会话超时为6分钟时表也会更新。以下...

javascript php ajax post session-timeout
1个回答
0
投票

问题是您没有更改将阻止会话在N秒后过期的任何内容,您只是在编写脚本,其方式是在此时间之后将破坏会话。会话gc(垃圾收集器)会定期执行并删除旧的会话,一旦发生,$_SESSION['LAST_ACTIVITY']也将被删除。

您必须尝试防止gc删除会话或更改应用程序中的逻辑。

© www.soinside.com 2019 - 2024. All rights reserved.