如果用戶在事務中間停止完全加載頁面,然後刷新頁面,事務是否會應用兩次?在事務處理中重新加載頁面
3
A
回答
5
簡短的答案是 - 你必須檢查。如果即使一個查詢沒有正確執行,事務也會失敗。但是,這是真正的問題 - 如果用戶中止加載,那並不意味着服務器將停止執行代碼。中止頁面加載意味着用戶決定不再接收數據。您的Web服務器不必遵守,也不必遵守PHP - 他們可能甚至不知道用戶關閉管道的事實。現在我們進入一個完全不同的遊戲區域 - PHP可以嵌入到服務器中,也可以作爲獨立服務器(稱爲php-fpm
)。如果PHP通過mod_php嵌入到Apache等服務器中 - Apache將決定是否會中斷正在執行PHP進程的線程或進程。它仍然可以決定執行整個事情,收集結果,然後它會嘗試將結果寫回到套接字 - 只是意識到用戶不在那裏了。
正如你所看到的,你的問題的複雜性不是那麼簡單,「如果用戶中止」 - 它不是由用戶到你的Web服務器上程序運行過程。
現在,讓我們假設Web服務器願意玩球,它會以某種方式告訴PHP中止執行 - 在這種情況下,事務將不會執行,它將失敗,因爲不會發出提交。
如果服務器不願意玩球,或者根本沒有辦法中止PHP進程 - 那麼是的,最終會執行兩個或更多的事務,具體取決於您的用戶所做的事情。
相關問題
- 1. 如何處理頁面重新加載
- 2. Javascript - 事件,重新加載頁面
- 3. 如何處理Cordova/PhoneGap中的頁面重新加載
- 4. 處理大頁面加載
- 5. 重新加載頁面再次運行我的事件處理程序
- 6. Vuex,vue-router和處理頁面重新加載(F5)
- 7. 在p:dataTable重新加載數據在頁面重新加載
- 8. 在JavaScript中重新加載頁面
- 9. 在AngularJS中重新加載php頁面
- 10. onhashchange重新加載頁面?
- 11. 重新加載HTML頁面
- 12. 重新加載頁面
- 13. 重新加載頁面Div
- 14. 重新加載JSP頁面
- 15. AJAX頁面重新加載
- 16. caroufredsel重新加載頁面
- 17. FormsAuthentication.RedirectFromLoginPage重新加載頁面
- 18. mvc重新加載頁面?
- 19. 在URI中處理頁面重新加載使用OAuth訪問代碼
- 20. 如何在頁面加載後註冊事件處理程序?
- 21. 在頁面加載時執行的JQuery事件處理程序
- 22. 重新加載電話中的頁面
- 23. 從iframe中重新加載頁面
- 24. 在後臺重新加載頁面
- 25. 頁面重新加載在ajax
- 26. 只在頁面重新加載jquery
- 27. 頁面在提交後重新加載
- 28. QueryParams正在重新加載頁面
- 29. 避免頁面重新加載在GWT
- 30. 頁面重新加載在asp.net
不完全確定,但我想它取決於在刷新發生之前是否命中了'COMMIT'命令。 – diggersworld
交易正在服務器上進行,並且很容易測試。客戶端刷新會發送一個新的,即使重複的請求。 –
一旦用戶發送請求,它就會被髮送。通常沒有辦法知道用戶是否在他們的瀏覽器中點擊「停止」。很多人會在帖子表單中使用唯一值來阻止它發生兩次,或者Post/Redirect/Get工作流程停止頁面刷新成爲一個大問題。 – TZHX