データをjavaで書き込み、phpで読み出すのですが、phpで読み出すとmemcacheが文字化けする問題が発生することが分かりましたので、その解決方法を紹介します。 memcache 内の文字。
javaはphpを読み取り、memcacheコンテンツを書き込みます
ストーリーの背景: Java を使用してデジタル レコードを挿入しましたが、php を使用して正しく読み取ることができませんでした。
今日、MemCachedClient を使用して数値または Java オブジェクトを挿入すると、PHP で呼び出すと文字化けすることがわかりました。
オブジェクトは理解できますが、単純な数字も文字化けします
として
コードは次のとおりです | コードをコピー |
mcc.set("a",25); |
PHP から出力されるのは文字化けしたコードであり、クエリに Telnet を使用すると
疑問符が出てきます。
パラパラとめくった後、パッケージのカテゴリを変更したいと言いました。
最後に問題が見つかりました。代わりに文字列を使用すると、java と php は同じように使用できます。
コードは次のとおりです | コードをコピー |
mcc.set("a","25"); |
さらに、Telnet 192.168.0.1 11211 を使用して正しい番号を取得できます。
元々、値 a を追加したかったので、int を使用した方が便利だと考えましたが、実際には PHP の memcache の読み取りと競合しました。変数の型を前後に変換してみましょう。
memcache への書き込みに Java を使用し、memcache からの読み取りに php を使用し、同じ文字列ストレージを使用している場合は、多くの問題を回避できます。
Java ではないクラス パッケージは動作しません。
javaはphpを読み取り、memcacheコンテンツを書き込みます
現在の要件: PHP は、キーを「my_key」として、値を「my_value」として memcache に書き込み、次に Java を使用して memcache に接続し、my_key と my_value の値を読み取ります。
PHP側のコードは次のとおりです:
コードは次のとおりです | コードをコピー |
$mem=new Memcache; |
テスト後、phpを書いた後、phpとmemcacheコマンドラインを使用して非常にうまく取得できます。
ただし、以下のJavaコードを使用して取得するとnullが取得されてしまいます
コードは次のとおりです | コードをコピー |
com.danga.MemCached.MemCachedClientをインポートします; パブリック クラス CacheReader { 静的プライベート MemCachedClient クライアント =new MemCachedClient(); |
最初は、エンコードかパラメータ設定に問題があるのではないかと思いました。後で、おそらくさまざまな memcache クライアントのアドレス指定方法が異なるのではないかと思いました。紆余曲折を経て、この問題は間接的に解決されました。Java 側の memcache クライアントを変更し、net.spy.memcached.MemcachedClient を使用しました。コードは次のとおりです:
コードは次のとおりです | コードをコピー |
インポートjava.io.IOException; net.spy.memcached.MemcachedClient をインポートします; パブリッククラス SpyMem { |