Magento не может распознать memcached php сессии - PullRequest
1 голос
/ 28 февраля 2012

Я работаю над развертыванием magento с главной целью , упрощая создание продукта . По сути, у нас есть несколько очень трудоемких вызовов в бэк-энде, которые должны выполняться асинхронно, чтобы пользователь мог продолжать работу.

  • Первым делом я использовал AJAX, чтобы отправить данные в трудоемкий сценарий и переместить пользователя через javascript.

Это несколько работает, но magento-сессии кажутся зависимыми от php-сессий - насколько я вижу, у пользователя будет сессия, созданная в каталоге, указанном в php.ini, и одна, созданная в magento/var/session.

Поскольку этот php-сеанс основан на файлах, я не смогу получить никакого ответа от сервера во втором запросе (перенаправление) или любых других запросов в том же сеансе до первого вызова (сценарий, вызываемый ajax) закончил

  • Мое решение этого состояло в том, чтобы записать в кэш эти файлы сеанса (наряду с magento), чтобы разрешить эти асинхронные вызовы.

Однако magento не может распознать эти сеансы теперь, когда они хранятся в memcache.

Почему это?

Я бы подумал, что он использовал стандартные функции php при доступе к этим сеансам - хотя я не могу найти ни одну из этих функций в исходном коде, но они должны быть вызваны каким-то образом.

Я успешно проверил, что сессии могут быть сохранены и загружены правильно. Я не получаю сообщений об ошибках, и журнал пуст.

Есть идеи, почему magento не может справиться с этим?

Является ли это даже приемлемым подходом для выполнения этих асинхронных вызовов, или есть намного лучшее решение?

TL; DR Стандартные сессии php хранятся с использованием memcache. Кажется, Magento не узнает их. Почему это?

Ответы [ 2 ]

0 голосов
/ 29 февраля 2012

Так что это неловко. Нет нужды говорить, что когда я проверил его сегодня утром, перезагрузив, все заработало.Возможно, службу memcache пришлось перезапустить?Не решил мою первоначальную проблему об асинхронных вызовах, как я надеялся, но это другая история.: D Добрый день

0 голосов
/ 29 февраля 2012

Похоже, вы не определили memcached в вашем файле app/etc/local.xml.Это должно выглядеть примерно так:

<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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...