时间: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应用服务器甚至不知道客户端已经断开了连接。
这种情况,只能从优化后台入手。