2012-02-28 61 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 美好的一天