2016-05-17 72 views
0

用PHP 5.4運行apache服務器。中止POST XHR可靠嗎?

我有一個表單將xhr請求發佈到服務器,並在當前xhr完成之前再次按下按鈕時中止以前的請求。因此,如果我坐在那裏,儘可能快地點擊按鈕(大約100-150ms內),並看到所有取消的XHR堆積在我的網絡選項卡中,然後讓最近的請求實際完成,我檢查服務器,並看到所有取消的請求實際上「完成」了他們在服務器上的任務(連接到數據庫並在表中刪除一些數據)。

也可能相關:「工作」(插入到數據庫中)後發生的唯一情況是將狀態字符串發送回客戶端。

我讀到,你不應該依賴取消HTTP請求來實際取消服務器進程,但有些東西在這裏發臭。

取消XHR請求或我的服務器正在進行的操作是否可靠?

+0

http://php.net/manual/en/function.ignore-user-abort.php – PeeHaa

+3

XMLHttpRequest放棄方法是可以的,但如果請求已經發送到服務器,那麼服務器將處理請求甚至如果我們中止請求。客戶端不會等待/處理響應。 –

回答

0

XMLHttpRequest異常中止僅用於阻止UI,但不取消服務器請求。

那麼答案是?這對服務器來說是不可靠的。

如果您計劃一次阻止多個請求,則可以使用1)服務器端排隊或2)在請求正在進行時簡單地禁用操作按鈕(僅在請求完成時才重新生成按鈕)。我會說後者更簡單。

0

HTTP是一種無狀態協議。當您從客戶端中止您的POST時,它只會讓客戶端無法偵聽響應,但POST已被髮送到服務器。當服務器收到請求時,它不會坐在旁邊,等待另一個請求;它只是執行與對給定資源的POST請求相關聯的操作。