php - 会话中的 PHP 变量没有立即更新
问题描述
在两个不同的 php 文件中,一个在会话中设置变量,另一个从其中读取。在更新第二个文件后立即获取旧值。
我的页面有两个连续的 jQuery ajax 调用。
从远程服务器获取访问令牌并将其设置在 $_SESSION[token] 中的令牌。如果它已经在会话中找到了一个有效的令牌,则什么也不做。
/makeReq 使用来自 $_SESSION[token] 的令牌调用另一个 api
考虑到它的授予时间和到期时间,我检查会话是否到期。当它过期时,它会在 $_SESSION[token] 中获取并设置新令牌,但在第二次调用中从 $_Session[token] 读取时它会获取旧值。
这是来自单个页面的两个单独的 jQuery ajax 调用。
下面是我的令牌端点的代码。
$current_time = time();
$get_new_token = true;
$request_token = null;
if (isset($_SESSION['token'])) {
$request_token = $_SESSION['token'];
$last_token_expire_time = $request_token['grant_time'] + $request_token['expires_in'] -600;
$get_new_token = $last_token_expire_time < $current_time ? true : false;
}
if ($get_new_token) {
$request_token=get_token();
$request_token['grant_time'] = time();
$_SESSION['token'] = $request_token;
}
下面是我的 makeReq 端点的代码
$header=array(
'Content-Type:application/json',
'authorization:'.$_SESSION["token"],
'x-app-key:'.APP_KEY
);
下面是我提出请求的代码
jQuery.ajax({
url: "'.plugin_dir_url( __FILE__ ) . "token.php".'",
type: "POST",
contentType: "application/json",
success: function (data) {
}
});
jQuery.ajax({
url: "'.plugin_dir_url( __FILE__ ) . "makeReq.php".'",
type:"POST",
data: {formData: postData},
success: function(data) {
}
});
解决方案
听起来像是缓存问题。尝试消除任何可能干扰缓存的东西。如果您在 wp 专用主机上,例如 WpEngine,请注意他们鼓励根本不要使用会话。
此外,让您只使用基本部分进行编码,以查看您是否会丢失会话。
推荐阅读
- javascript - 使用复选框作为按钮在 jquery 中自动计算总数?
- android - android studio 什么都解决不了?我应该怎么办?
- apache-nifi - HandleHttpResponse 处理器抛出找不到此标识符的 HTTP 响应对象
- regex - .htaccess 重定向所有包含特定目录名称的 url
- spring-boot - Cloud Run 重启问题
- python - Python/Pandas 时间序列值与差异的相关性
- javascript - 如何隐藏 TD 行但使用 javascript 选择值
- node.js - 如何制作 eval 命令?
- java - 如何使用 for(int i = 10; i >= 5; ++i) {
- go - Golang Lambda 函数确定来源