2012-02-28 84 views
1

我正在進行magento部署,主要目標是簡化產品創建。 基本上我們在後端有一些非常耗時的調用,它們應該運行異步,以便用戶可以繼續工作。Magento無法識別memcached php會話

  • 我在這第一炮是使用AJAX發佈的數據耗時腳本,並通過javascript重新定位用戶。

這個有點工作,但Magento的會議似乎是依賴於PHP的會議 - 據我可以看到該用戶將不得不在php.ini,一個在magento/var/session創建指定的目錄下創建一個會話。

因爲這個php會話是基於文件的,我不會在第一次調用之前在第二次請求(重定向)或同一會話中的任何其他請求中獲得服務器的任何響應(該腳本由ajax調用)完了。

  • 我的解決方案是memcache這些會話文件(與magento一起)以允許這些異步調用。

但是,magento現在無法識別這些會話,因爲它們存儲在memcache中。

這是爲什麼?

我認爲它在訪問這些會話時使用了標準的PHP函數 - 儘管我在源代碼中找不到這些函數,但它們必須以某種方式調用。

我已成功測試會話可以正確存儲和加載。 我沒有收到任何錯誤消息,並且日誌爲空。

任何想法爲什麼magento無法處理這個?

這是甚至可以接受的方法來實現這些異步調用,還是有更好的解決方案?

TL; DR 標準php會話正在使用memcache進行存儲。 Magento似乎無法識別它們。爲什麼是這樣?

回答

0

這聽起來像你沒有在你的app/etc/local.xml文件中定義的memcached。它應該是這個樣子:

<session_save><![CDATA[memcache]]></session_save> 
<session_save_path><![CDATA[tcp://xxx.xxx.xxx.xxx:11211?persistent=1&weight=2&timeout=10&retry_interval=10]]></session_save_path> 

替換xxx.xxx.xxx.xxx與memcached服務器地址。

+0

感謝您的迴應。但是,這並非如此。我在我的local.xml文件中有這個確切的代碼,這使得magento自己的會話memcached - 這確實有效。例如,我可以將mangento自己的會話memcached和php的會話保存爲文件 - 這是有效的。當我memcache php會話時發生問題。基本上每個會話有兩個不同的會話(具有任何意義?) 通過文件結構,它可能看起來像這樣: /web/tmp/[php會話,在php.ini中描述的路徑] /web/www/magento/temp/sessions/[magento會話,config.xml中的路徑] – user1238626 2012-02-29 09:44:56

+0

FTR我正在測試這個wamp。 – user1238626 2012-02-29 10:01:13

+0

你做錯了什麼。您應該在您通過ajax調用的自定義php腳本中重用magento會話。 – Zyava 2012-03-01 21:22:41

0

所以這是尷尬的..不用說,當我測試它今天早上重新啓動它的工作。也許memcache服務必須重新啓動?沒有解決我關於異步調用的原始問題,這是我的希望,但那是另一回事。 :D 美好的一天