当前位置:Gxlcms > PHP教程 > javascript-ajax请求终止后,怎么让请求的php也终止??

javascript-ajax请求终止后,怎么让请求的php也终止??

时间:2021-07-01 10:21:17 帮助过:19人阅读

我做了一个 网页版的检索功能。

由前台发起搜索,后台执行搜索,将搜索结果返回。

碰到文件夹搜索,又文件夹下文件数量多的时候(2万以上),搜索时间很长(2分钟左右才能得出结果),有的时候我很没有耐心等下去,就点了停止搜索。

  // 终止搜索
  stopSearch: function(){
    console.log('xhr请求集合: ' , this.reqList);
    for (var i = 0; i < this.reqList.length; ++i)
      {
        if (this.reqList[i].readyState !== 0 || this.reqList[i].status !== 200) {
          this.reqList[i].abort();
        }
      }
  } 
  

点击停止搜索后,的确前台是停止了:

可是后台 php 脚本却仍在运行(且我设置了php脚本运行的最长时间为3min),每次页面刷新等好久(1min多),这还是比较老实的情况下(只发起一个),若是等到鸟火的时候,鼠标狂点,那估计我只好重启服务器了...汗(以下是狂点的后果,才点两三次,最长的请求时间就达到5min了...)!

有没有办法在停止请求的时候,也终止后台php脚本的运行??

回复内容:

我做了一个 网页版的检索功能。

由前台发起搜索,后台执行搜索,将搜索结果返回。

碰到文件夹搜索,又文件夹下文件数量多的时候(2万以上),搜索时间很长(2分钟左右才能得出结果),有的时候我很没有耐心等下去,就点了停止搜索。

  // 终止搜索
  stopSearch: function(){
    console.log('xhr请求集合: ' , this.reqList);
    for (var i = 0; i < this.reqList.length; ++i)
      {
        if (this.reqList[i].readyState !== 0 || this.reqList[i].status !== 200) {
          this.reqList[i].abort();
        }
      }
  } 
  

点击停止搜索后,的确前台是停止了:

可是后台 php 脚本却仍在运行(且我设置了php脚本运行的最长时间为3min),每次页面刷新等好久(1min多),这还是比较老实的情况下(只发起一个),若是等到鸟火的时候,鼠标狂点,那估计我只好重启服务器了...汗(以下是狂点的后果,才点两三次,最长的请求时间就达到5min了...)!

有没有办法在停止请求的时候,也终止后台php脚本的运行??

没有,你能做的就是优化你的搜索性能

只有从优化搜索性能上下手了。HTTP协议并不存在向后台发起请求终止的“请求”,而且如果前端服务器采用nginx的话,PHP应用服务器甚至不知道客户端已经断开了连接。
这种情况,只能从优化后台入手。

人气教程排行