2016-01-07 70 views
1

當我從php 5.3 - > php 5.6升級並使用具有相同序列化和配置設置的相同版本的memcacheD擴展時,會話不再有效。php 5.3 - > 5.6 memcacheD擴展會話兼容性問題

即使在相同的設置;我的會話數據不會在php版本升級之間持續存在。 (我負載均衡的服務器,並能夠在它們之間進行測試)

+0

http://php.net/manual/en/appendices.php – Sammitch

+0

@Sammitch謝謝你的回覆。我已經檢查過升級文檔並測試了我的代碼;但我的問題是關於使用會話處理的非常特定的擴展。 –

+0

我剛試過,它似乎不工作;但會喜歡文獻。 –

回答

0

PHP序列化在PHP 5.3和5.6之間不兼容。 PHP中斷更改說:「如果傳遞的序列化數據已被操縱以嘗試實例化對象而不調用其構造函數,則unserialize()將失敗。」

但是,我發現當一個版本反序列化另一個版本的序列化時,序列化通常會被破壞。我們遇到了這個問題,使用緩存在Memcached中的序列化數據以及多個PHP版本試圖訪問相同序列化數據的數據庫記錄。

http://php.net/manual/en/migration56.changed-functions.php

一種解決方案是不使用PHP序列和使用JSON或一些其它標準的數據序列來代替。

我們必須編寫一個「翻譯」步驟,可以讀取兩個版本的數據,並寫入我們要移至的新數據序列化格式(本例中爲JSON)。