2015-06-17 107 views
0

我爲我的團隊創建了一個Web應用程序(Django),其中文件首先從PDF轉換爲.txt,然後在Excel工作表中捕獲有意義的信息。當用戶提交請求時,我的命令行也有一些進程啓動(服務器託管在我的PC上)。問題在於用戶何時關閉了會話(選項卡),但該進程仍在我的命令行上運行。由於此服務器將在本地運行(我的電腦),我將如何知道用戶已關閉瀏覽器(會話)並相應地關閉了我的服務器?Django Session相關查詢

+0

您不應該在PC上運行生產應用程序。 Heroku或AWS不是一種選擇嗎? – IanAuld

+0

這個網絡應用程序將在本地運行,因爲我爲我的團隊創建了這個應用程序,它需要訪問共享驅動器。 – python

+0

您剛剛描述了一個帶在線存儲的webapp – IanAuld

回答

0

link

服用時爲B/W的瀏覽器和服務器(JBoss和Liferay的在這種情況下)創建一個會話,它把一個cookie上標識會話的客戶端的瀏覽器。該cookie可能在瀏覽器關閉時設置爲過期。因此,當您重新打開時,瀏覽器不再擁有該cookie,因此無法識別任何會話。所以,從技術層面來說,服務器端的會話在技術上並沒有關閉。會話過期時會發生這種情況,通常是由於不活動而導致的一段時間。對於一個會話,通常有三種方式在服務器端被破壞 - 一個註銷(應用程序破壞會話),一段時間不活動(可能是15分鐘或其他)或者一個「硬」超時例如,希望用戶每8小時重新登錄一次。

換句話說,即使瀏覽器關閉了,服務器也不知道它,並且會話還活着,直到它到期。只有在瀏覽器關閉時才需要登錄bc/cookie。現在,當選項卡關閉時,瀏覽器不一定關閉,因此它仍然具有該cookie。

一種做你想做的事情的方法是在選項卡關閉時調用一個Javascript鉤子(如事件)。這個JavaScript可以調用一個servlet或者web服務來讓它知道去掉會話。