# bdb.php # # ■ 導入すべきこと ■ # ・PHPをインストール # ・ウェブサーバーソフトウェア(Apache、nginxなど)上でPHPが動くようにする # ・PHPでdba関数が使えるようにする (dba関数:http://php.net/manual/ja/ref.dba.php) # ・Berkeley DBをインストール # ・このファイル名がbdb.txtの場合、拡張子をphpに変更してウェブサーバー上に設置 # ・この中のデータベース部分($db)を環境に合わせて変更し、そのディレクトリのパーミッションを変更 # ・ウェブサーバーソフトウェアの再起動 # # # ■ Berkeley DBとdba関数の導入 ■ # # ▽ CentOSならPHPをインストール後、次のコマンドで導入可能: # yum -y install db4 php-dba # # ▽ FreeBSDならportsのphp5-dbaディレクトリ内で # make install clean # 途中表示されるオプションで、BDBに[X]をつけてインストールを進める。 # # # ■ GETメソッドでkeyが渡されたときにそれをもとにデータを返す # ここではあらかじめ登録してあるkeyを受けたらその値を返す。 # データベースのファイル名とそのディレクトリ $db = "./Berkeley.db"; $key = (string)$_GET['key']; if ( $key=='string' || $key=='photo' || $key=='video' ) { # 出力するデータの型がわかっている場合、ヘッダーを付けて送り出したほうが親切。 if (isset($_GET['header'])) { switch ($key) { case 'video': header('Content-type:video/mp4'); break; case 'photo': header('Content-type:image/png'); break; } } # 読み出しだけの場合はデータベースを継続的にオープンするためdba_popenを使用。 # 頭の@はエラーがあっても無視させる。 echo dba_fetch($key,@dba_popen($db,'r','db4')); die; } # ■ サンプル用にデータベースにファイルを登録 ■ ## 以下の行で、コメント行はそのままで、#をとって以下のプログラムも有効にして実行。 # ## データベースをオープンする ## 読み書きできない場合はデータベースがないものとしてデータベースを作成(生成するディレクトリのパーミッションに注意) # if (!$h=@dba_open($db,'wd','db4')) $h = @dba_open($db,'nd','db4'); # ## 文字列を登録 (key名 string) # dba_replace('string','この文字列はデータベースから出力されています。',$h); # ## 画像を登録 (key名 photo) # dba_replace('photo',@file_get_contents('http://i-o.io/Photo/sample.png',FILE_BINARY),$h); # ## 動画を登録 (key名 video) # dba_replace('video',@file_get_contents('http://i-o.io/Video/2008-01-02/3.mp4',FILE_BINARY),$h); # ## データベースをクローズする # dba_close($h); # ?>
Oracle Berkeley DBはOracleが開発するKey-Value型のデータベースです。
簡単かつ高速にアクセスできるので、私が管理する他のサイト(私の鉄道模型検索など)で表示する商品の画像はすべてBerkeley DBに蓄えられたデータです。
下の例は、1つのデータベースに保存されたテキスト、画像、動画を呼び出しています。