我做了一個 網頁版的檢索功能。
由前台發起搜索,後台執行搜索,將搜索結果返回。
碰到文件夾搜索,又文件夾下文件數量多的時候(2萬以上),搜索時間很長(2分鐘左右才能得出結果),有的時候我很沒有耐心等下去,就點了停止搜尋.
<code> // 终止搜索 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(); } } } </code>
點擊停止搜尋後,的確前台是停止了:
可是後台php 腳本卻仍在運行(而且我設定了php腳本運行的最長時間為3min),每次頁面刷新等好久(1min多),這還是比較老實的情況下(只發起一個),若是等到鳥火的時候,滑鼠狂點,那估計我只好重啟伺服器了...汗(以下是狂點的後果,才點兩三次,最長的請求時間就達到5min了...)!
有沒有辦法在停止請求的時候,也終止後台php腳本的運作? ?
我做了一個 網頁版的檢索功能。
由前台發起搜索,後台執行搜索,將搜索結果返回。
碰到文件夾搜索,又文件夾下文件數量多的時候(2萬以上),搜索時間很長(2分鐘左右才能得出結果),有的時候我很沒有耐心等下去,就點了停止搜尋.
<code> // 终止搜索 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(); } } } </code>
點擊停止搜尋後,的確前台是停止了:
可是後台php 腳本卻仍在運行(而且我設定了php腳本運行的最長時間為3min),每次頁面刷新等好久(1min多),這還是比較老實的情況下(只發起一個),若是等到鳥火的時候,滑鼠狂點,那估計我只好重啟伺服器了...汗(以下是狂點的後果,才點兩三次,最長的請求時間就達到5min了...)!
有沒有辦法在停止請求的時候,也終止後台php腳本的運作? ?
沒有,你能做的就是優化你的搜尋效能
只有從優化搜尋效能上下手了。 HTTP協定並不存在向後台發起請求終止的“請求”,如果前端伺服器採用nginx的話,PHP應用伺服器甚至不知道客戶端已經斷開了連線。
這種情況,只能從優化後台入手。