2011-07-10 98 views
0

如果我做一個像eBay一樣的倒計時鐘,我該如何用django和sql來做到這一點?我假設每秒鐘在django或sql中運行一個函數來檢查時間將會非常低效。用django和sql實時倒計時鐘?

這是否是一個合理的策略?

或者是他們這樣做的方式: 當頁面加載時,它從服務器獲取結束日期時間,並在用戶機器上運行一個javascript倒計時時鐘。 如果是這樣,你如何做JavaScript的倒計時鐘?如果沒有用戶頁面加載時間限制,我將如何刪除/移動數據?或者,用戶是否有必要加載頁面來檢查時間限制以創建一個有效的倒計時時鐘?

回答

2

我不認爲這個問題與SQL有什麼關係,真的 - 除了你可能從SQL檢索到期時間。你真正關心的是如何在瀏覽器中實時顯示超時時間,對嗎?

很明顯,最簡單的方法就是向頁面發送「剩餘秒數」計數器,無論是在初始加載時,還是作爲AJAX請求的一部分,然後使用Javascript顯示計時器,並每秒更新一次當前值。我會選擇使用「剩餘秒數」計數器而不是「結束日期時間」,因爲您不能相信瀏覽器的時鐘設置正確 - 但您可能會相信它可以正確倒計秒。

如果您不信任Javascript或客戶端的時鐘是準確的,您可以定期通過AJAX將當前剩餘秒數重新發送到瀏覽器。我不會每秒都這樣做,也許最多每15到60秒。

至於刪除/移動數據時鐘到期時,你需要做的所有這些在Javascript中。

我不是100%確定我回答了您的所有問題,但您的問題似乎有點分散。如果您需要更多關於手術理論的說明,請詢問。

0

我前段時間也遇到過同樣的問題。

首先你的問題不是django和sql都沒有關係。這是一個普遍的概念,並且由於服務器開銷而不易實現。

我想到的一個解決方案是在數據庫中保存進程的啓動時間。 當有人要求您查看剩餘時間時,從數據庫中讀取數據,減去當前時間,然後在瀏覽器中用您的JavaScript函數初始化您的javascript函數,並使用該值倒數15秒。之後,在不等待用戶請求的情況下,使用AJAX進行相同的操作。

但是,根據您的應用程序會有其他實現。如果您詳細解釋您的應用程序,則可能有其他解決方案。

例如,如果您實施的問卷的時間有限,那麼對於每個回答提交,您都應該通過計算出的第二個javascript值。