読者です 読者をやめる 読者になる 読者になる

k-holyのPHPとか諸々メモ

Webで働くk-holyがPHP(スクリプト言語)とか諸々のことをメモしていきます。ソースコードはだいたいWindowsで動かしてます。

Gehirn (ゲヒルン) RS2を使ってみたメモ その2 Silex + MySQL

Gehirn (ゲヒルン) RS2を使ってみたけどPharファイルが使えないと思ったら使えるようになった件 の続き。
今回はSilexからMySQLを使ってみます。

事前準備として、Gehirn WebServices ControlPanel にてデータベースを作成する必要があります。
コントロールパネルのメニューを RS2 → アカウント名 → データベース と遷移して「データベースを追加する」からデータベース名とパスワードを入力します。
データベース名には 「ユーザー名_」がプリフィクスとして付けられ、ユーザー名はデータベース名と同一のものが設定されるようです。
(ここちょっと分かりづらいですね…)

SilexでMySQLを使うには、PDOをそのまま使ってもいいのですが、せっかくなので標準で用意されている DoctrineServiceProvider を利用してみます。
手順は公式マニュアル Silex - The PHP micro-framework based on Symfony2 Components を参考にします。

ComposerでDoctrine DBALをインストールします。

composer.json に doctrine/dbal の定義を追加して…

コンソールからupdate実行

$ php composer.phar update
Loading composer repositories with package information
Updating dependencies
  - Installing doctrine/common (2.2.3)
    Downloading: 100%

  - Installing doctrine/dbal (2.2.x-dev 912c2de)
    Cloning 912c2de3a7b702db9568f7da147c5c65a792eb98

  - Updating symfony/routing dev-master (00001c0 => 8fdb2e2)
    Checking out 8fdb2e2a1dcd3b58e187b95a301e2ebe021ea013

  - Updating symfony/http-kernel dev-master (0571e0d => 7dcb495)
    Checking out 7dcb495971685c70968fb22bf04ee9809c439352

Writing lock file
Generating autoload files

doctrine/common, doctrine/dbal がインストールされました。
ついでに Routing, HttpKernel も更新されたようです。

DoctrineServiceProvider 用のMySQL接続設定は、こんな外部ファイルに定義しました。

doctrine.php

データベース名、ユーザー名、パスワードは Gehirn WebServices ControlPanel にて設定したものを入力します。
前述の通り、ユーザー名はデータベース名と同じ値で!要注意です。

エントリスクリプトはこんな感じで、とりあえずMySQLにアクセスログっぽいのを記録してみます。
index.php

分かると思いますが、コメントアウトしているCREATE文は1回目だけ実行しました。

記録されました。MySQLもおっけーです。

[追記]
UserAgentに「alert('hello');」とか「<script>」とか入れたの誰ですか。
あと早速Baiduspiderさんがrobots.txtを探しにきてて、引っかかってました。(nameが「robots.txt」になってた)
まあ、アクセス解析的な意味でログ記録するなら、別の入口を設けてJavaScriptで再リクエストさせた方が良いと思います。
(こんな記事を真似る人はいないとは思いますが…)