GAE+PHP/Rubyで拓く新世界

第2回 SQL4GでGAE+PHPを体験しよう

萩原 巧
リトルソフト株式会社

中越 智哉
株式会社ナレッジエックス

2010/2/22

簡単なPHPスクリプトを作成しよう

 GAE+PHPの動作確認として、簡単なスクリプトを作成します。

 URLにアクセスすると、GAE上に格納されているデータをSQL4G経由で取得し、その内容を表示するだけのものです。

 以下のソースをファイル名「hello.php」として作成して、(projectRoot)/warに配置します。

●hello.php
<html>
    <head>
        <meta http-equiv="content-type" content="text/html;charset=UTF-8" />
        <title>Hello</title>
    </head> 
    <body> 
        <h1>こんにちは! PHP on GAE with SQL4G </h1>
        <?php
            // PEAR::DB モジュールをinclude
            include $_SERVER["DOCUMENT_ROOT"]."/phplibs/inc.php";
            include "DB.php";

            // データベース作成スクリプトをinclude
            include "createInstance.php";

            // SQL4Gへ接続 phptypeは SQL4G になります。
            $dsn = array('phptype'  => 'SQL4G', 'database' => 'DB4', 'user' => 'sa', 'password' => 'sa');
            $db = DB::connect($dsn);

            // SQL4G接続エラーチェック
            if (PEAR::isError($db)) {
                die($db->getMessage());
            }

            // クエリー実行
            $ret = $db->query("SELECT * FROM NAME;");

            // クエリーエラーチェック
            if (PEAR::isError($ret)) {
                die($ret->getMessage());
            }

            // 実行結果を表示
            print('No  Name  Dept'.'<br>');
            while ($ret->fetchInto($row,DB_FETCHMODE_ASSOC)) {
                print($row["NO"] .' '. $row["NAME"] .' '. $row["DEPT"].'<br>');
            }

            // SQL4Gへの接続を切断
            $db->disconnect();
        ?>
    </body>
</html>

 このスクリプトは、Pear::DBをはじめとするデータアクセスコンポーネントによるデータアクセス手法をご存じな方なら、すぐに理解できるでしょう。いままでのPear::DBを使用したデータ取得とまったく同一の方法でGAE上のデータを取得、表示しています。

 また、GAE上でスクリプトを動かすための特別なメソッドなども一切なく、シンプルなPHPスクリプトであることも特徴の1つといえます。

 なお、今回の動作確認ではPHPスクリプトのみで実行を行うため、Smartyを使用しません。Smartyを使用したアプリケーションについては次回説明します。

 データベース作成スクリプト「createInstance.php」を作成して、(projectRoot)/warに配置します。このスクリプトは、SQL4Gのデータベースの存在を確認して、データベースが存在しない場合、データベース、テーブルおよびそのデータを自動的に作成します。

●createInstance.php
<?php
    // Java - PHP 連携
    import jp.littlesoft.sql4g.*;
    try{
        // データベース存在チェック
        new GAdministrator("DB4", "sa", "sa", false);
    } catch (Exception $e2){
    // データベースが存在しない場合、データベースとテーブル及びデータを作成します
    new GAdministrator("DB4", "sa", "sa", true);

    $dsn = array('phptype'  => 'SQL4G', 'database' => 'DB4', 'user' => 'sa', 'password' => 'sa');

    $db = DB::connect($dsn);

    $ret = $db->query("CREATE TABLE EMPLOYEES 
( NO INTEGER NOT NULL, NAME VARCHAR(255) NOT NULL, DEPT VARCHAR(255) NOT NULL  );");
    $ret = $db->query("INSERT INTO EMPLOYEES (NO, NAME, DEPT) VALUES (1, 'ながお', '開発部');");
    $ret = $db->query("INSERT INTO EMPLOYEES (NO, NAME, DEPT) VALUES (2, 'はぎわら', '技術部');");
    $ret = $db->query("INSERT INTO EMPLOYEES (NO, NAME, DEPT) VALUES (3, 'なかごし', '教育部');");
    $db->disconnect();
    }
?>

 このスクリプトでは、pear::DBモジュールを使用して、SQL4Gデータベースに対してデータの追加を行っています。pear::DBとの連携についても次回説明します。

画面5 実行イメージ

動作確認用コードをGAE上にアップロードしよう

 ここまでに設定した内容と作成したスクリプトを、GAE環境にアップロードしましょう。

 アップロード手順は、至って簡単です。プロジェクトの[google】−[Deploy Project to Google App Engine]を選択して表示されるダイアログに、GAEアカウント取得時に入力した情報を設定して、Deployボタンをクリックすれば、自動的にアップロードされます。

画面6 GAEデプロイ画面

GAE環境にアップロードする前に、ローカル環境で動作確認することもできます。Jettyと呼ばれるサーブレットコンテナを使用して、GAEのサーバ環境を擬似的に構築することで、ほぼ同条件での動作確認ができます。

 デプロイ後、http://GAEアプリのID/hello.phpにアクセスすると、先ほどの画面が表示されるはずです。このスクリプトを実行することにより、SQL4Gを使用してGAE上に存在するデータの取得を行い、SQLを実行してその結果を表示するという、一連の動作を行えます。

 Railsアプリケーション編は、第3回「SQL4GでGAE+Railsを体験しよう」で説明しています。併せてご覧ください。

prev
3/3
 

Index
SQL4GでGAE+PHPを体験しよう
  Page1
GAE+PHP環境のセットアップ
SQL4GとPHP4Gモジュールの配置
  Page2
php.iniの配置とxmlの編集
Pearモジュールの配置
SQL4GAdminの起動を確認しよう
  Page3
簡単なPHPスクリプトを作成しよう
動作確認用コードをGAE上にアップロードしよう

index GAE+PHP/Rubyで拓く新世界

 Coding Edgeお勧め記事
いまさらアルゴリズムを学ぶ意味
コーディングに役立つ! アルゴリズムの基本(1)
 コンピュータに「3の倍数と3の付く数字」を判断させるにはどうしたらいいか。発想力を鍛えよう
Zope 3の魅力に迫る
Zope 3とは何ぞや?(1)
 Pythonで書かれたWebアプリケーションフレームワーク「Zope 3」。ほかのソフトウェアとは一体何が違っているのか?
貧弱環境プログラミングのススメ
柴田 淳のコーディング天国
 高性能なIT機器に囲まれた環境でコンピュータの動作原理に触れることは可能だろうか。貧弱なPC上にビットマップの直線をどうやって引く?
Haskellプログラミングの楽しみ方
のんびりHaskell(1)
 関数型言語に分類されるHaskell。C言語などの手続き型言語とまったく異なるプログラミングの世界に踏み出してみよう
ちょっと変わったLisp入門
Gaucheでメタプログラミング(1)
 Lispの一種であるScheme。いくつかある処理系の中でも気軽にスクリプトを書けるGaucheでLispの世界を体験してみよう
  Coding Edgeフォーラムフィード  2.01.00.91


Coding Edge フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

>

Coding Edge 記事ランキング

本日 月間