【发布时间】:2014-09-14 22:31:11
【问题描述】:
好的,我已经尝试解决这个问题了 天,但没有找到解决办法。我已经询问了与我的问题有关的 4-5 个不同的问题,但没有找到解决方案。
file.phpexample1.com:
我在这个页面上有一个 JavaScript 函数,它向example2.com(一个不同的域)上的一个 PHP 文件发送一个 POST 请求。
function buttonFunction() {
$.post("http://example2.com/core/runner.php",{username:username, password:pword, coins:coins}, function(data) {
// Stuff
});
}
该函数将runner.php的结果动态加载到页面的一个div中。
现在如果用户在执行过程中离开页面(结果尚未生成)然后他/她刷新页面,然后决定再次运行该函数,那么两个 PHP 进程将运行同时来自同一个用户(也就是说,如果旧用户仍在运行)。
现在我需要一个修复,无论是在example2.com 上的PHP 文件中还是在example1.com 上的JavaScript 中,都可以在开始新的请求之前中止/停止之前的PHP 请求。
我的尝试:
#1
我已经尝试过了,但不幸的是跨域 cookie 几乎是不可能的:
PHP session files saved, but no cookies and session not read
目标是将 PHP pid 存储在 SESSION 变量中,并在每次运行时检查具有该 pid 的旧进程是否仍在运行(通过从 SESSION 变量中获取 pid),如果是,那么我会杀死该进程并将 SESSION 变量的值更改为新的 pid。
#2
我还尝试运行一个循环来检查连接是否在主脚本运行时中止。但是,这也不起作用:
PHP run loop and script at same time
#3
我也想过做这样的事情:
window.onbeforeunload = function(event) {
http.abort();
};
所以它会在用户离开/刷新页面/浏览器之前中止请求。但是,我不确定这个的可靠性 (Safe Way to Send POST Request via Javascript)。
【问题讨论】:
标签: javascript php jquery session cookies