Symfoware

Symfowareについての考察blog

MessagePack JavaでシリアライズしたデータをPHPでデシリアライズする

MessagePackを使用して、Javaでシリアライズした郵便番号データを
PostgreSQLのbytea列に登録しました。

MessagePackでシリアライズした内容をPostgreSQLのbytea列にJavaで登録する

このデータをPHPで読み込めるかテストしてみます。



事前準備



・PHPからPostgreSQLへの接続
PHPからPostgreSQL 9.3.2にPDO(PDO_PGSQL)を使用して接続する

・bytea列の取得
PostgreSQL 9.3.2にJavaから登録したThriftバイナリをPHPで読み込む

・MessagePackのインストール
FreeBSD10 + PHP5でMessagePackを使用して、Mapのシリアライズと復元




サンプル



住所に「銀座」を含むデータを検索してみます。


  1. <?php
  2. // ローカルのデータベース「sample」に
  3. // ユーザー名「pgadmin」、パスワード「password」で接続
  4. $db = new PDO ('pgsql:dbname=sample;host=localhost', 'pgadmin', 'password');
  5. // 検索実行
  6. $stmt = $db->query("SELECT address FROM post_mp");
  7. foreach ($stmt as $row) {
  8.     // stream_get_contentsでストリームから全ての値kを読み出す
  9.     $bytes = stream_get_contents($row['address']);    
  10.     
  11.     // 復元実行
  12.     $map = msgpack_unserialize($bytes);
  13.     
  14.     if (strpos($map['町域名'], '銀座') === false) {
  15.         continue;
  16.     }
  17.     
  18.     echo $map['都道府県名'] . $map['市区町村名'] . $map['町域名'] . '<br/>';
  19.     
  20. }
  21. // データベース切断
  22. unset($db);





あっさり実行出来ました。

339_01.png

MessagePackで、キーや値に日本語文字列を含めていても
問題なくPHPで取り出せました。
関連記事

テーマ:プログラミング - ジャンル:コンピュータ

  1. 2014/03/01(土) 18:53:44|
  2. PostgreSQL
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集
<<C#でMessagePackを使用して、Mapのシリアライズと復元 | ホーム | FreeBSD10 + PHP5でMessagePackを使用して、Mapのシリアライズと復元>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://symfoware.blog68.fc2.com/tb.php/1297-eebffd1d
この記事にトラックバックする(FC2ブログユーザー)