我需要擴展PHP的垃圾收集器,所以當它刪除舊會話時,它也應該刪除一些數據庫條目。我嘗試過使用SessionHandlerInterface的實現,但它不起作用。我應該在哪裏添加我的代碼?是否有可能或者這些實現與標準的session_destroy調用有關,而不是垃圾收集器的破壞?PHP擴展垃圾回收器
0
A
回答
1
函數session_set_save_handler允許您在多個會話事件(打開,關閉,讀取,寫入,銷燬和gc)上附加回調。在你的情況下,destroy
和/或gc
可能會這樣做。
0
銷燬會話。由session_regenerate_id()(with $ destroy = TRUE),session_destroy()和session_decode()失敗時調用。
因此,只有在腳本期間顯式銷燬會話或發生錯誤時,纔會調用使用SessionHandlerInterface
定義的銷燬函數。
要銷燬舊的會話,必須使用gc
參數session_set_save_handler
並刪除datetime < currenttime - $lifetime
的所有條目。
編輯:
需要注意的是,只有具有gc
稱爲在查詢beggining的1%的概率。這意味着它的執行很大程度上取決於您的服務器上有多少流量。當你獨自在測試服務器上工作時,你不能輕易執行它。
相關問題
- 1. PHP何時觸發垃圾回收器?
- 2. Java垃圾回收器
- 3. 噓,垃圾回收器
- 4. .NET垃圾回收器
- 5. java垃圾回收
- 6. Java:垃圾回收
- 7. Python垃圾回收
- 8. C#垃圾回收
- 9. Erlang垃圾回收
- 10. java - 垃圾回收
- 11. JDBC垃圾回收
- 12. JS垃圾回收
- 13. requestAnimationFrame垃圾回收
- 14. vb.net垃圾回收
- 15. ColdFusion垃圾回收
- 16. PhoneGap垃圾回收
- 17. Chrome垃圾回收
- 18. Java:垃圾回收
- 19. Javascript垃圾回收
- 20. Parallel Copy垃圾回收器和Parallel Scavenge垃圾回收器的區別
- 21. 垃圾收集器
- 22. 谷歌瀏覽器擴展中的垃圾收集
- 23. PHP中是否有垃圾回收?
- 24. 回收垃圾回收問題
- 25. 垃圾回收無法回收BitmapImage?
- 26. 刪除根垃圾回收
- 27. AIR for iOS垃圾回收
- 28. Rebol&Red垃圾回收
- 29. PHP5:SplObjectStorage垃圾回收
- 30. 線程垃圾回收
我已經嘗試了這兩種方法,它似乎並沒有被調用。你能提供一個例子嗎? – user3615971
這是一個很好的例子,實現'gc'方法:[here](http://php.net/manual/en/function.session-set-save-handler.php#60316) – WickedYeti
我不需要更改整個處理程序進程,只是在垃圾回收器刪除會話時執行額外的步驟。我想保留當前保存到文件夾的功能。 – user3615971