ホームページ  >  記事  >  バックエンド開発  >  Java と PHP 間で Memcached ストレージ データを共有する際の問題と解決策

Java と PHP 間で Memcached ストレージ データを共有する際の問題と解決策

WBOY
WBOYオリジナル
2016-06-13 13:02:19738ブラウズ

Java と PHP 間で Memcached に保存されたデータを共有する際の問題と解決策

Java と PHP 間で Memcached ストレージ データを共有する際の問題と解決策

2010 年 8 月 18 日、午前 5:57 に デーモン によって投稿されました

PHP で書き込まれたデータは Java で読み取ることができず、Java で書き込まれたデータは PHP で文字化けとして読み取ることができます。
PHP が提供する memcache 拡張プロトコルに基づいて独自の Java memcached クライアントを作成した場合、ここでは、
java; を使用した MemCachedClient パッケージを提供します。

php_extension: php_memcache.dll / memcache.so
java_jar: MemCachedClient [com.danga.MemCached.*]
解決策:

MemCachedClient のソース コードを確認したところ、Java は格納された値のタイプに基づいてフラグを設定する場合が異なることがわかりました。

	public static final int MARKER_BYTE             = 1;
	public static final int MARKER_BOOLEAN          = 8192;
	public static final int MARKER_INTEGER          = 4;
	public static final int MARKER_LONG             = 16384;
	public static final int MARKER_CHARACTER        = 16;
	public static final int MARKER_STRING           = 32;
	public static final int MARKER_STRINGBUFFER     = 64;
	public static final int MARKER_FLOAT            = 128;
	public static final int MARKER_SHORT            = 256;
	public static final int MARKER_DOUBLE           = 512;
	public static final int MARKER_DATE             = 1024;
	public static final int MARKER_STRINGBUILDER    = 2048;
	public static final int MARKER_BYTEARR          = 4096;
便宜上、両者間のデータ変換には JSON 形式が使用されます。

保存する場合、php と java の値の型は String 型である必要があります。
php は $mem->set( key, value ,
32,expire); 太字の部分に注意してください。これは必須です。 これでphpで書いたデータをjavaでスムーズに読み込むことができます。phpが配列やオブジェクトを書いた場合、javaがそれを読み込んだ後はjson.decodeでOKです。

1階 マズリー 2011-10-12

JSON で送信しても問題ありません。MEMCACHE が自動的に判断してシリアル化します。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。