我在網站上有一堆頁面,可以在一個頁面上執行的操作取決於網站訪問者的數據庫中的信息。因此,假設訪客A進入頁面B並更新數據庫以顯示他們已加入某個組。然後訪問者進入頁面C,即組頁面。如果用戶是組成員,則顯示成員內容。如果不是,則會顯示非會員內容。這裏是問題(btw,頁面在php中):鎖定訪客,直到mysql查詢完成
在理想的世界中,在頁面B上運行的查詢將在用戶轉到頁面C之前立即完成,因此數據庫始終填充了最新的信息在成員國。但是,可能會發生服務器負載很重的情況,並且在用戶轉到頁面C時查詢未完成。因此,即使用戶是該組的成員,也不會反映在頁面C上因爲查詢尚未完成。
有沒有一種方法可以讓用戶在頁面上運行查詢,直到查詢完成後,他們嘗試訪問的任何其他頁面將在查詢完成後立即「掛起」並加載,或者直到給定的時間已經過去了?我可以手動創建這個系統,但是如果mysql和php已經有內置的東西,那會更好。
萬一它很重要,我使用LAMP服務器。
用戶可以始終讓頁面C在另一個窗口中打開,然後在頁面B中的查詢仍在運行時刷新頁面。像這樣的情況很少發生,但它確實經常發生以獲得適當的對策。導航到頁面C不取決於用戶第一次訪問頁面B;用戶總是可以轉到頁面C.除非用戶是成員,否則不能查看組內容。如果他們不是會員,則會顯示不同的內容。我的道歉,應該明確表示。 – user396404 2010-09-26 13:13:34
@ user396404我的手動鎖定機制應該工作,讓他們有一個指示,等待他們的行動從頁面B完成,然後,如果他們打開或已打開頁面C. – Fanis 2010-09-26 17:14:05
謝謝。這正是我打算做的(使用memcached),但只是想看看是否有其他解決方案。 – user396404 2010-09-26 17:36:06