可以设置或取消设置SESSION变量吗?

时间:2015-07-26 05:05:20

标签: php jquery ajax

我只是想知道SESSION变量有时候设置/取消设置是否很慢?

说实话我不确定如何测试SESSION设置或取消设置的速度有多快但是我注意到当我使用ajax调用来设置/取消设置SESSION变量大约10%的时间代码时在设置/取消设置SESSION变量之前执行ajax回调函数。

我已经在回调函数中放置了一个setTimeout,让它在执行代码之前等待一秒钟,这似乎消除了这个问题,虽然这似乎是一个糟糕的修复。做这样的事情被认为是不好的做法吗?

学习者,善良: - )

jQuery

$("#whatever_button").click(function(){  

    var $x = "1";

    $.ajax({      
        url: "filename.php",
        data: { set_session: $x},
        type: "post",
        dataType: "text",
        success: function(response){
            if (response == "1"){

               //delay execution for 1 second
               setTimeout(function(){
                   //Place code here
               }, 1000);

            } else alert("Something went wrong.");
        },
    });
});

PHP

if (isset($_POST['set_session'])){

    unset($_SESSION['variable']);    //unset session variable
    echo "1";
}

1 个答案:

答案 0 :(得分:1)

一个会话存储在一个文件中,因此根据你的服务器,它可能需要几毫秒来保存它,尽管我几乎不会怀疑这是否会引起注意,除非你已经将session_save_path设置为1985'软盘驱动器,其中几乎没有工作软盘。

更有意思的是您的目标,因为您不会返回与新设置foreach (MyInvoiceClass invoice in ListView1.ItemsSource) { // NOW use the "invoice" object to access its properties } 相关的任何内容。

也许你应该包括一个测试来查看会话是否未设置

$_SESSION['variable']

如果你想检查时间,你总是可以使用php的unset($_SESSION['variable']); if ( ! isset($_SESSION['variable'])) return '1'; 功能。

microtime()