gpt4 book ai didi

javascript - Php脚本自动被多次调用

转载 作者:可可西里 更新时间:2023-11-01 13:14:14 25 4
gpt4 key购买 nike

我在这里遇到了一个奇怪的问题。我正在使用 javascript ajax(我使用 jquery)。现在的情况是;

一个 ajax 调用是调用一个 php 脚本,它基本上是一个长时间运行的进程,它设置了一些 session 变量。

稍后在某些时间间隔内(比如每 2 秒)我运行另一个 ajax 调用来检查 session 变量以了解进程(第一个 php 脚本执行)何时完成。

第一个 php 脚本从数据库中获取数据并将其写入文件。在每次抓取中,我都会计算循环次数并将其存储到 session 变量中以保留某种跟踪记录。喜欢;

 $i=0;
$_SESSION['time']=date('m-d-Y H:i:s');
while(...)
{
ini_set('session.use_only_cookies', false);
ini_set('session.use_cookies', false);
ini_set('session.use_trans_sid', false);
ini_set('session.cache_limiter', null);
session_start();
$_SESSION['tracksatus']="loop number : ".$i." time is :"$_SESSION['time'];
session_write_close();

$i++;

......
......
}

我通过 setInterval ajax 调用的另一个 php 脚本就像这样;

 echo $_SESSION['trackstatus']

设置的时间间隔 ajax 正在返回我;

  loop number 1 time is m-d-Y H:i:s
loop number 5 time is m-d-Y H:i:s
loop number 8 time is m-d-Y H:i:s
......

然后再调用几次;

  loop number 1 time is m-d-Y H1:i1:s1
.....

注意 H:i:s 变为 H1:i1:s1

所以根据我的理解,php 脚本调用了两次。为了您的信息,相同的代码可能在 12 小时之前工作。我以前遇到过这个问题并以某种方式解决了它(反复试验所以我不知道如何或可能自动......好吧实际上我不知道)。

你能告诉我我做错了什么吗?如果您需要更多信息,请提及。

有趣的是,在问了这个问题后,它甚至没有更改一行代码就按预期工作。但我想知道原因。

最佳答案

我想我知道是什么原因,PHP 将 session 变量写入文件,但它仅在脚本执行结束时执行,因此在长脚本结束之前您看不到另一个脚本中 session 的更改。

您可以通过添加 session_write_close(); 来修复它; session_start(); 每次更改 session 数据后。

session_write_close 会将更改写入 HD,以便另一个脚本可以读取它。session_start 将从 HD 加载 session ,但请确保您的另一个脚本不对 session 进行任何更改,这些更改将被您的长脚本覆盖。

如果您使用单独的域,还有一件事:在实际的 AJAX 调用发生之前,您的浏览器将 OPTIONS 请求发送到相同的 URL 以检查 CORS header 。因此,在您的脚本开始时检查 HTTP METHOD,如果它是 HEADOPTIONS,则使 die();

关于javascript - Php脚本自动被多次调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43602800/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com