iT邦幫忙

0

如何決定 session 時間?

想請問一下
我在 php.ini 設定session是存在86400
但能不能讓他永久?
應該是說我可以在網頁上決定他多長,不會被php.ini 限制,那我php.ini 要怎麼設定呢?網頁上要怎麼設定呢?

http://www.vixual.net/blog/archives/55 => 參考
如果資料不夠 https://www.google.com.tw/search?q=session+%E6%B0%B8%E4%B9%85 這邊更多
其實這邊所謂的永久是不可能的事,只能是有永久的感覺。
因為session跟cookie都是有所謂的容量空間問題。
除了本身程式的設定之外。這還得搭配許多系統的相關設定。

這也是為何,不會有任何一種開發web程式,有所謂的session永久的設定原因之一。

所以,你只能乖乖的用存在時間的方式來處理。你可以設定一年的時期。
但這邊也得要注意伺服器本身也有空間容量及檔案數的條件問題。
當無法滿足其它條件的情況下,session還是會消失的。

不過山不轉路轉,session的資料不外乎就是因為儲存位置的容量及空間影響才造成的。但session本身是浮動的。所以如果是有唯一性機制的情況下(如有帳號對應的情況下)。你可以設計成轉存session資料到永久不會消失的地方。(如資料庫或是文件檔上,雖然session也是文件。
JWT,結案!
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

0
混水摸魚
iT邦研究生 2 級 ‧ 2018-03-20 17:21:50
最佳解答

隨機產生一個唯一id存資料庫,客戶端cookie也同時存入這個id,
在客戶一進你的網站時就取出cookie id比對資料庫中id.
只要客戶端沒有清空cookie就可以一直是登入狀態.
不一定要使用session

fillano iT邦超人 1 級 ‧ 2018-03-20 17:42:24 檢舉

用cookie也是有機會不會永久的。
先不考量客戶會清除的問題。
cookie也是有容量極限的。超過了也是會消失。

0
I code so I am
iT邦高手 1 級 ‧ 2018-03-21 10:57:22

如果 session 永久不 expired,連線數不斷累增,最後會拖跨 web server。

一個改良的方式是瀏覽器不關的話,session 就保持不 expired,相關作法很簡單,就是設一個Timer在session快 expired 時, 對 server 發送一個request,讓 session 繼續存活。瀏覽器或網頁關閉時,Timer 失效,session 就自然會 expired.

我要發表回答

立即登入回答