2011-09-24 41 views
0

假設我將jQuery的AJAX HTTP請求發送到後端PHP腳本,該腳本在MySQL服務器上執行一些查詢。在發出請求時,我想重新生成一個新的請求並終止服務器端的當前請求。使用AJAX響應來終止併發請求

腳本前end.php包含此:

function process(json) { 
// iterate and display result 
} 

google.maps.event.addListener(map, 'idle', function() { 
.... 
$.getJSON('back-end.php?id=$id&bounds=$bounds', process); 
}); 

腳本背end.php包含此:

$id = // get current MySQL process id 
// check and send request to terminate previous process if id is set 
// send request to get data based on bounds criteria 
echo json_encode(data); 

我怎樣才能獲得的$ id到腳本前置式end.php,這樣我可以在發佈下一個服務器時立即終止服務器上的前一個進程?

回答

1

您需要將此進程ID保存在兩個不同請求共同的地方。類似於文本文件或db表或後端的memcache。因此,例如,第一個PHP請求啓動您的進程,然後將進程ID寫入諸如current_id.txt之類的文件。然後第二個請求檢查這個文件的ID,然後殺死該進程,然後在它被殺死後清空current_id.txt。

如果你需要這個功能可以在許多用戶中複製,你必須有一種方法來確定它是一個具有會話變量或會話ID本身的人,並創建像<session_id>_process_id.txt這樣的文件,這樣每個唯一用戶都可以這樣做彼此獨立。

+0

哇..我從來沒有想到這一點。感謝您的建議! –