2012-02-28 16 views
1

私は、合理化製品の作成に主目的のmagentoデプロイメントを進めています。 基本的に、バックエンドには非常に時間のかかる呼び出しがあります。これは、ユーザーが作業できるように非同期で実行する必要があります。この時MagentoはmemcachedのPHPセッションを認識できません

  • 私の最初のショットは、時間のかかるスクリプトにデータを投稿しjavascriptを介してユーザーを再配置するAJAXを使用していました。

このやや動作しますが、Magentoのセッションは、PHPのセッションに依存しているようだ - 限り、私は、ユーザーがphp.inimagento/var/sessionに作成したもので指定されたディレクトリに作成されたセッションを持つことになります見ることができるように。

このPHPセッションはファイルベースなので、最初の呼び出し(ajaxによって呼び出される)の前に、同じセッション内の2番目のリクエスト(リダイレクト)または他のリクエストでサーバーからの応答を得ることはできません。終了しました。

  • 私の解決策は、これらの非同期呼び出しを可能にするために、これらのセッションファイル(magentoとともに)をmemcacheすることでした。

ただし、me​​mcacheに保存されているため、magentoはこれらのセッションを認識できないようです。

これはなぜですか?

私は、これらのセッションにアクセスする際に標準のPHP関数を使用したと思います。私はこれらの関数をソースコードで見つけることはできませんが、何らかの方法で呼び出さなければなりません。

セッションを適切に保存してロードできることをテストしました。 エラーメッセージは表示されず、ログは空です。

なぜマゼンタがこれを処理できないのでしょうか?

これらの非同期呼び出しを達成するには、それは許容可能なアプローチですか、それとももっと良い解決策ですか?

TL; DR 標準PHPセッションはメモリキャッシュを使用して格納されています。 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> 

あなたのmemcachedサーバのアドレスとxxx.xxx.xxx.xxxを交換してください:それは次のようになります。

+0

お返事ありがとうございます。しかし、これはまあまあです。私はこの正確なコードをlocal.xmlファイルに入れて、magento自身のセッションをmemcachedにします。これはうまくいきます。例えば、私はmangento自身のセッションをmemcachedにし、phpのセッションをファイルとして保存することができます。これは動作します。この問題は、私がmemcacheのphpセッションを行うときに発生します。セッションごとに2つの異なるセッションがあります(意味があります) ファイル構造は次のようになります: /web/tmp/[php.iniに記載されているphpセッション、パス] /web/www/magento/temp/sessions/[magentoセッション、config.xmlのパス] – user1238626

+0

FTR私はこれをwampでテストしています。 – user1238626

+0

あなたは何か間違っている。 ajaxで呼び出すカスタムPHPスクリプトでmagentoセッションを再利用する必要があります。 – Zyava

0

これは厄介です。私は今朝それを再起動してテストしたとき、言うまでもありません。 Memcacheサービスを再起動しなければならなかったのでしょうか?私が望んでいたような非同期呼び出しに関する私の元の問題を解決しなかったが、それは別の話である。 :D おはよう

関連する問題