Php 会话变量设置或取消设置是否缓慢?

Php 会话变量设置或取消设置是否缓慢?,php,jquery,ajax,Php,Jquery,Ajax,我只是想知道会话变量有时设置/取消设置是否很慢 老实说,我不确定如何准确地测试会话设置或取消设置的速度,但我注意到,当我使用ajax调用设置/取消设置会话变量时,在设置/取消设置会话变量之前,ajax回调函数中的代码执行时间的10%左右 我在回调函数中设置了一个setTimeout,让它在执行代码之前等待一秒钟,这似乎消除了问题,尽管这似乎是一个错误的修复。这样做被认为是不好的做法吗 这里的学习者,友善点:-) jQuery $("#whatever_button").click(functio

我只是想知道会话变量有时设置/取消设置是否很慢

老实说,我不确定如何准确地测试会话设置或取消设置的速度,但我注意到,当我使用ajax调用设置/取消设置会话变量时,在设置/取消设置会话变量之前,ajax回调函数中的代码执行时间的10%左右

我在回调函数中设置了一个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";
}

会话存储在一个文件中,因此根据您的服务器,保存它可能需要几毫秒的时间,尽管我毫不怀疑这会很明显,除非您将会话保存路径设置为一个1985年的软盘驱动器,其中包含一张勉强工作的软盘

更有趣的是您的目标,因为您不会返回任何与新未设置的
$\u会话['variable']
相关的内容

也许您应该包括一个测试,看看会话是否未设置

unset($_SESSION['variable']);
if ( ! isset($_SESSION['variable'])) return '1';
如果您想检查时间,您可以一直使用php的
microtime()
函数

$time_start = microtime(true);
unset($_SESSION['variable']);
$time_end = microtime(true);
$time = $time_end - $time_start;

echo "$time seconds";

你开始上课了吗?请求主体中的实际响应是什么?在success内部和测试内部使用setTimeout来获得有效响应实际上没有意义。当您启动时间时,您已经得到了有效的响应。您在告诉会话变量是已设置还是未设置?我可以告诉您会话已设置还是未设置,因为当我使用浏览器手动刷新页面时,该变量将显示为已设置/未设置wanted@charlietfl,回调函数在设置会话变量之前执行。因此,我延迟代码的执行,以便会话变量能够捕获up@michael85软盘…汉普斯特驱动电源?我用它来取消设置用户名变量,然后刷新页面,尽管当页面刷新10次中的1次时,仍会显示用户已登录,然后,我必须手动刷新浏览器,以便显示用户已注销(因为会话未设置)。我将试着检查一下时间:-)为什么在之后刷新页面时使用ajax???摆脱ajax并正常重新加载页面我使用ajax,因此表单提交和使用location时没有PRG。reload()不会创建页面历史记录,因此无论页面重新加载多少次,用户都可以返回上一页。我想我做错了。这是一个连续11次的列表,注意有些是完全相同的时间?1.6927719116211E-5秒2.0027160644531E-5秒1.9073486328125E-5秒2.0980834960938E-5秒2.0027160644531E-5秒1.7881393432617E-5秒1.5020370483398E-5秒2.1934509277344E-5秒1.5974044799805E-5秒1.8119812011719E-5秒1.69277116211E-5秒seconds@user3796133你用什么转换成秒?microtime()实际上返回的是
微秒
,所以我认为michael在没有转换的情况下使用了seconds这个词,犯了一个错误