2010-12-20 72 views
0

我想知道是否可以用本地PHP方式銷燬/修改會話,而不涉及文件I/O指令。有沒有辦法用PHP清空會話文件?

我不是在談論$ _SESSION,我的意思是訪問會話文件本身

例如,Linux上的PHP會話存儲爲文件:

@lamp:/var/lib/php5$ ls 
sess_301dc8935f1775312e9007431782c68b 
sess_6892f0bec257e646d193adfd91233c40 
sess_966909941003dd6fd333727d8862be6e 
sess_cb7c07117cef89674a686ffff8a730f2 
sess_ffb4db1d9002741b7e0fcc02090b9aaa 
sess_305aeb0fdba7548e389394cb31d77c3b 
.... etc 

$ _SESSION給我們的當前會話裏面有什麼價值,以及session_start()session_destroy()將終止當前的會話標識符。

我想知道如果我可以銷燬或修改全球本地方式的會話,而不會訴諸於我必須做的fopen(/var/lib/php5/sess_whatever),我不想與當前會話一起工作,我想要一個腳本能夠刪除或修改$_SESSIONsession_startsession_stop之外的會話,因爲它們會強制您使用當前會話。

+0

$ _SESSION&它如何處理是PHP的一部分,Apache的工作只是將cookie/session_id信息傳遞給PHP。 PHP可以用不同的方式實現會話,而不僅僅是通過文件(例如MySQL,Memcache)。如果您試圖終止除活動會話之外的會話,這可能會有所幫助,因爲與數據庫的接口可能比文件系統更清晰。你也可能會獲得性能提升。 – Klinky 2010-12-20 22:42:02

回答

1

聽起來對我來說就像你不能兩面都有。會話處理函數被構建爲與當前會話進行交互。爲了操縱其他會話,你將不得不去整個fopen()路線。

3

session_destroy做的是:

session_destroy()銷燬所有與當前會話相關的數據。它不會取消設置與會話關聯的任何全局變量,也不會取消設置會話Cookie。

+0

破壞當前會話,是的,但我希望能夠全局刪除或修改,而不是$ _SESSION中的數據。再次,這是我想要修改的會話文件,如果有本地PHP命令來執行此操作,而不是僅限於當前會話,而不執行類似'fopen('../ data/sessions .../session3958912')的操作' – Incognito 2010-12-20 23:36:11

+0

@ user257493:但是這*會*銷燬只存儲的會話數據,而不會銷燬'$ _SESSION'中的會話數據。那你還想做什麼? – Gumbo 2010-12-21 03:52:15

+0

我已添加詳細信息。 – Incognito 2010-12-21 14:30:08