我想與Memcache作爲Joomla的會話處理程序進行通信。在PHP docs底部示例之後,我已經將memcache註冊爲會話處理程序。只要用戶加載Joomla網站,其會話ID和其他用戶數據一起存儲到Joomla數據庫中。但是現在我不知道如何讓Memcache讀取序列化會話數據,就像使用XCache使用xcache_get($sessionid)
一樣,只要我創建一個新的Memcache實例,就可以在文檔頂部示例中看到會話條目被刪除來自數據庫。但會議仍然存在。這讓我很困惑。我需要訪問(讀/寫)序列化的用戶會話。我怎樣才能從PHP會話處理程序中獲取/設置它?序列化用戶會話在Memcache中作爲會話處理程序存儲在哪裏?以及如何讀取/寫入序列化的數據?
回答
我相信你正在尋找相當於是這樣的:
獲取會話:
$session = $memcache->get($sessionId);
設置會話:
$memcache->set(
'sessionprefix:'.$sessionId, // the session id.
$session, // the actual session itself
false, // set to true to use compression
$expire, // expiration in second
);
我還沒有使用的memcache非常但我已經讀過,人們通常在鍵中使用前綴來分隔不同類型的對象(這也是redis類似的數據存儲的常見做法)。我在這裏使用了'sessionprefix:',但我確定Joomla有他們自己的特定前綴。
是的,我已經假設從[此線程](http://stackoverflow.com/questions/1816128/change-serialization-函數式的PHP換分佈式緩存)。但是沒有回答的問題是:「變量$ memcache涉及到什麼?」它不是全球性的。如前所述,我試圖將它與一個新的Memcache實例關聯起來,該實例未能按預期工作。我想這創建了第二個Memcache實例。前綴不應該是一個問題。主要問題是找出序列化數據所在的位置,以便我可以加載,反序列化,處理並將其存儲回來以使更改生效。 – user1014412
memcache中的數據駐留在正在運行的memcache服務器的內存中(因此名稱)。 memcache API(或協議)是修改它的唯一方法。查看http://blog.softlayer.com/2012/meet-memcached-a-developers-best-friend和http://memcached.org/about獲取更詳細的解釋。 –
這對我來說並不新鮮。但是你正在混合數據緩存和會話緩存。雖然在使用數據緩存之前,數據緩存是明確地實例化的,但在通過ini_set()將其註冊爲PHP session.handler時不會。在我的初始文章中檢查鏈接的PHP文檔。後者沒有提及它的回報,這就是爲什麼我堅持要求從它序列化的會話數據。此外,你友善的鏈接頁面一起指的是另一個加速器 - MemcachD - (注意尾部D),這不是我所指的。我的問題涉及到Memcache - 沒有尾隨D. – user1014412
- 1. Magento會話序列化在哪裏?
- 2. NodeJS Passport會話序列化 - 反序列化用戶進入會話?
- 3. Where/Symfony2如何序列化和寫入其會話數據?
- 4. PHP會話處理程序存儲會話爲JSON不解碼php序列化正確
- 5. 在Vaadin處理不可序列化的Guava EventBus與會話序列化
- 6. 反序列化PHP會話數據
- 7. Zend_Session:反序列化會話數據
- 8. 反序列化數據庫會話Codeigniter
- 9. 序列化會話對象
- 10. 會話狀態序列化
- 11. 如何以及在哪裏存儲應用程序初始化數據?
- 12. 序列化存儲在會話變量中的對象的任何理由?
- 13. 會話存儲在哪裏?
- 14. 我可以序列化一個hibernate會話,然後反序列化它以獲取會話對象嗎?
- 15. 序列化爲asp.net會話狀態
- 16. 爲Ajax序列化會話內容
- 17. 會話變量存儲在哪裏以及我們如何看?
- 18. WCF在跳轉之前序列化數據庫中的數據,以及它在哪裏反序列化?
- 19. Laravel在哪裏存儲memcached會話驅動程序的配置?
- 20. 當會話被允許被序列化/反序列化?
- 21. 在SQL中會話化時間序列數據
- 22. 我如何在Groovy應用程序中存儲數據作爲(會話,閃存)在Web應用程序中
- 23. ASP.NET會話狀態服務器 - 保存序列化的數據
- 24. Rails 4.1會話的序列化
- 25. 驗證碼處理程序在會話過期中存儲值
- 26. 通用處理程序中的會話?
- 27. 在使用PassportJS時序列化/反序列化用戶進入會話的目的是什麼?
- 28. 如何使會話數據可序列化
- 29. 在USSD Java應用程序的會話中存儲數據。
- 30. 無法序列化會話狀態
這是什麼版本的joomla?在任何情況下,如果不是通過Joomla的會話實現,您通常可以通過$ _SESSION超級全局訪問會話本身。直接訪問會話不是最好的主意。 –
我指的是Joomla 3.2。相信我,我知道直接操縱並不是一個好主意,但我正在努力開發一個[補丁問題](https://github.com/joomla/joomla-cms/pull/3126),並且想要獲得手牌在Memcache採用其他會話處理程序的工作代碼到Memcache(d)處理程序(s) – user1014412