問題タブ [libmemcached]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - pylibmc によって保存されたデータは、php memcached で圧縮解除できません
Python を使用して大量のデータを memcached に保存するアプリケーションがあります。Python では pylibmc を使用し、php 側では php-memcached ライブラリを使用しています。
- pylibmc v.1.2.3
- php-memcached v.2.0.1
- libmemcached v1.0.8。
圧縮が機能する場合を除いて、他のすべては問題ありません。これは、Pythonでデータを圧縮する方法です
telnet でチェックインすると、圧縮されていることを意味する文字化けした値が表示されます。今phpでそれを読んでいます。
上記を実行すると、同じ文字化けした値が得られます。これは、圧縮が解除されていないことを意味します。pylibmc は zlib を使用しているため、それに合わせて php の圧縮タイプも zlib に変更しました。他にどのような設定を行う必要がありますか? 助けてください。
さらに参照するために、python pylibmc で文字列を設定した後の memcached の出力を次に示します。
PHP の memcached クライアントを使用して格納された文字列の memcached の出力は次のとおりです。
ご覧のとおり、これには怪しいものがあります。pylibmc の圧縮サイズは 40 バイトで、php-memcached を使用して圧縮された同じデータは 44 バイトです。また、フラグが pylibmc を使用して保存された場合は 8、php-memcached を使用して保存された場合は 48 であることに注意してください。
zend-framework - Zend_Session_SaveHandler_Interface と session_id の謎
このコードに基づいて独自の Zend_Session_SaveHandler をセットアップしようとしています http://blog.digitalstruct.com/2010/10/24/zend-framework-cache-backend-libmemcached-session-cache/
私の session_id が不思議な振る舞いをすることを除いて、これはうまくいきます。上記のブログで見つけることができるように、私は Zend_Session_SaveHandler_Cache クラスを使用しています (ただし、私は自分のライブラリに駐車しているので、名前は My_ で始まります)。
私のブートストラップには次のものがあります。
.ini ファイルのこのコードに基づいてセッションを開始するには
ここまでは順調ですね。誰かがログインしようとして Zend_Session::rememberMe() が呼び出されるまで。Zend_Session のコメントで読むことができます
通常、「rememberMe()」はセキュリティ コンテキストの変更を表すため、新しいセッション ID を使用する必要があります
もちろん、これは非常に真実であり、新しいセッション ID が生成されます。ログインに成功すると、ユーザーの Zend_Auth データがこの新しいセッションに書き込まれます。これは、ブログの元のクラスにログ機能を追加したためです。
そして、ここで問題が発生します。Zend_Session は古い ID のセッション データを読み取り続けるため、この新しい ID は Zend_Session に渡されないようです。つまり、Zend_Auth インスタンスのないものです。したがって、ユーザーはログインできなくなります。
問題は、再生成後に saveHandler を新しい ID で動作させる方法です。どんな助けにも乾杯。
python - ubuntu 10.04でdjangoフレームワーク用のlibmemcachedをインストールする方法
libmemcached 0,37 と ln -s /usr/local/lib/libmemcached.so.2 /usr/lib/libmemcached.so.2 をインストールしました
しかし、manage.py を実行すると、まだ
import _pylibmc RuntimeError: pylibmc requires >= libmemcached 0.32 が返され、0.31 でコンパイルされました
新しい libmemcached をインストールしようとしましたが、libmemcached.so.2 ファイルがありません。
php - memcached の「プロトコル インジェクション」を適切に防止するにはどうすればよいですか?
\r\n
キーを入力して memcached サーバーから値を取得すると、それを使用して memcached プロトコルを挿入し、別のコマンドを実行できることがわかりました。以下はコード例です。
PHP の場合:
Python の場合:
がユーザーから読み取られた場合key
、ユーザーは memcached サーバーで任意のコマンドを実行できます。たとえば、実行flush_all
して Web サイトの速度を低下させたり、別のユーザーのパスワード キャッシュを設定したりできます。
クライアント ライブラリがこれらの不正な文字を削除しないのはなぜですか? 私のコードでそれを適切に防ぐ方法は?
python - pipを使用してpylibmcをインストールする際のエラー
こんにちは、pipを使用してOSX Lionにpylibmcをインストールしようとすると、次のエラーが発生します。
この問題を解決する方法の手がかりはありますか?
libmemcache - memcached の障害を検出しない
libmemcached-0.32 を使用しています。以下のように動作フラグを設定します
memcached_behavior_set (memcached、MEMCACHED_BEHAVIOR_SERVER_FAILURE_LIMIT、5); memcached_behavior_set (memcached、MEMCACHED_BEHAVIOR_AUTO_EJECT_HOSTS、1);
ただし、memcached の 2 つのホストのうちの 1 つがダウンしても、そのホストは排出されません。
あるサーバーがダウンした場合、libmemcached が別のサーバーに移動してリクエストを取得/設定するなど、何らかの切り替えメカニズムが必要です。
私は何をすべきか ?
memcached - libmemcached をノンブロッキング モードで使用するのはいつですか?
libmemcached をアプリケーションに統合し始め、ドキュメントを読んでいます。ノンブロッキング モード フラグがあります。簡単なグーグルの後、ノンブロッキングモードにはパフォーマンス上の利点があるようですが、ノンブロッキングモードで libmemcached を実行することには欠点がありますか?
c - libmemcached-memcached_mgetがブロックしているようです
memcachedサーバーが1つあります。libmemcachedCapiを使用してインターフェースします。非ブロッキングモードと応答モード(動作フラグ)を使用していません。
それが助けになるなら、私はnginxCモジュール内でlibmemcachedも使用しています。
問題は、memcached_mgetがブロックされているように見えることです。つまり、レイテンシが約40ミリ秒のサーバーの場合、memcached_mgetが完了するまでに40ミリ秒かかります。これは完全に非同期ではありません。
これが私が使用しているコードです:
ASCIIプロトコルを使用しています。バイナリも使用してみましたが、役に立ちませんでした。memcached_mget_executeも試しました。私は次のようにtcを使用してレイテンシーをシミュレートしています:
memcached - c および Java memcached クライアントで一貫して同じように実装されている一貫性のあるハッシング
Memcache の値を Java で設定し、C クライアントから同じ値を取得したいと考えています。
複数の memcache 環境で可能ですか。どちらも同じハッシュ標準を使用していますか?
c - キーを保存できませんでした: cgi-bin で c プログラムを実行するとシステム エラーが発生する
CentOS 6.4 でコマンドラインから次のプログラムを実行すると、期待どおりの結果が得られますが、Apache cgi として実行すると、エラーCouldn't store key: SYSTEM ERROR
エラーが発生します。Memcached、Apache、およびプログラムを同じユーザーで実行しています。
私は何が間違っている可能性がありますか?