2016-10-30 45 views
0

是否可以自動銷燬PHP中的會話,而無需手動檢查PHP頁面中的會話。PHP - 自動銷燬會話而無需調用PHP頁面

我搜索了這個,但答案導致我手動銷燬會話。

我需要這個自動化的概念,因爲現在我在電報上創建一個簡單的機器人來檢查房間是否過期。或者玩家已經達到了回答問題的最大時間限制(例如5秒)。

我還發現一個概念,使用每秒設置的cron作業來檢查每個用戶或玩家的會話。但我認爲,如果我把它設置爲每秒鐘,它會消耗很多內存,我認爲超時也不會很精確。

如果你們中的一些人能分享任何見解,我很高興。

感謝谷芽

回答

1

只是存儲在您想要的時鐘開始請求期間會話的時間戳(例如:當用戶呈現的問題)。例如:

$_SESSION['time'] = time(); 

任何時候,球員隨後讓您的服務器的請求,比較當前時間戳會話的時間戳。如果超過時間限制,則返回一條消息,指出時間已過。像這樣做:

if(time() - $_SESSION['time'] > 5) 
{ 
    // Time's up! 
} 

沒有必要,如果你做這種方式,如果你仔細想想,你需要檢查,如果時間已過期的唯一一次在後臺運行一個cron作業是當用戶嘗試提交回復。你要麼接受它,要麼不接受。如果用戶沒有提交任何內容,那麼通過另一種方法就沒有實際意義。

您可能還想在Javascript中實現一個計時器,以便您可以向用戶顯示其時間已過期。這將是更好的用戶體驗。所以JavaScript中的計時器會通知用戶,而我上面描述的$ _SESSION方法將在服務器端強制執行。

+0

嗨,感謝您的輸入,但事情是,如果所有的球員afk或theres沒有人擊中我的服務器上的pahe?房間不會過期,然後 – Webster

+0

你要在用戶端使用Javascript運行計時器。它會告訴用戶房間已過期,並且服務器端的代碼將通過在 –

+0

到期後拒絕請求來強制執行該操作,但不幸的是,我的情況下沒有用戶方。因爲我只創建一個Web服務或端點與電報bot api哥們進行通信。 – Webster

0

您可以使用條件語句和PHP unix時間戳的組合。