JavaScript   发布时间:2022-04-16  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了javascript – 多次自动调用Php脚本大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我在这里遇到一个奇怪的问题.
我正在使用 javascript ajax(我使用jquery).现在的情景是;

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

稍后在某些时间间隔(比方说,每2秒)我运行另一个ajax调用来检查会话变量,以了解进程(第一个PHP脚本执行)何时完成.

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

$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小时之前就可以正常工作.我之前遇到过这个问题,并以某种方式解决了它(试错,所以@R_878_6618@样或者可能是自动的……好吧,实际上我没有线索).

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

有趣的是,它只是在询问了这个问题之后才按预期工作,甚至没有改变一行代码.但我想知道原因.

解决方法

我认为我知道是什么原因,php将会话变量写入文件,但它只在脚本执行结束时才这样做,因此在长文件结束之前你不能看到另一个脚本中会话的变化.

您可以通过添加session_write_close()来修复它;在session_start();每次更改会话数据后.

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

如果您使用单独的域,还有一件事:在实际的AJAX调用发生之前,您的浏览器会将OPTIONS请求发送到相同的URL以检查CORS标头.所以在你的脚本开始时检查http METHOD,如果它是HEAD或OPTIONS make die();

大佬总结

以上是大佬教程为你收集整理的javascript – 多次自动调用Php脚本全部内容,希望文章能够帮你解决javascript – 多次自动调用Php脚本所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。