symfonyを使う上で+αな内容になってきたので軽く読み飛ばすだけにしています。
パフォーマンスとキャッシュ。
Load testing toolとしてJMeterが紹介されていますが僕が使ったことがあるのはMS Web Application Stress ツール。機能的には同じだと思います。もう1つ紹介されていたのがApacheのab。
チュートリアル中、”Put the result of the action in the cache”の項目はsymfonyのstable 0.6系では動かないそうです。
キャッシュに関するドキュメントをざっと見ると、ページ全体やサイドバーだけ、等々かなり細かくキャッシュファイルを生成することが出来るようです。
管理画面の作成。
eXtreme Programmingでやりましょう、とUser Storiesを組み立てるところから始めている。
$this->getContext()->getLogger()->warning($log);でログを取るのとtry/catchが初めて出てきた。
“Search engine”と題されているのでごっついが、やっているのはDB内のテキスト検索。
“How to build a search engine?”のところで書かれているZsearchはZend Framework(現在は0.2.0)の中に入っている。
http://framework.zend.com/manual/ja/zend.search.html
Zend_Search_Lucene は、完全に PHP 5 で書かれている汎用的なテキスト検索エンジンです。
symfonyでもPHPで書かれた汎用的なものにしたかったらしく、自前で実装する道を選んでいる。
まずは”Word index”。対象はもちろん英語のみ。”Stop words”はarray_diffで、”Stemming”はおなじみのPorter Stemming Algorithm(PHP5用のクラスがちゃんとある)。”Giving weight to words”で重み付け。TF-IDFは使わず単純にbodyとtitle、tagでそれぞれ重みを変えている。ここで登場するarray_count_valuesという関数は使ったことがなかった。
“Updating the index”で既存のデータを更新。
“The search function”からは検索のインターフェイス。少々複雑なSQLを組む。
本番環境への移行。
開発環境から本番環境(別サーバ)への移行をrsyncを使って簡単に行ってくれる。
config/properties.iniに設定を書いて
$ symfony sync production $ symfony sync production go
config/rsync_exclude.txtにシンクロしないディレクトリが記述されている。
“Production server configuration”では本番サーバでのsymfonyの設定方法。root権限を持っていればPEARのコマンドでインストールできるので開発環境と同じ手順でインストールすればよい。
“Show unavailability notice”には「ただいまメンテナンス中です」の出し方が載っている。これは便利。
“Use two versions of your application”では別バージョンのプロジェクトを動かす方法。
国際化(多言語対応)。
日付の表記法など各国で違うので大変なわけだが、文字列の多言語化に関してはXLIFFという書式のXMLでデータを記述し__()関数で出力する模様。
symfonyがやってくれる部分は少ないので多言語化するかどうかは、最初から決めておかないと大変なことは間違いない。
最終日!What’s next? いろいろ書いてありますが、僕のまとめは次の記事に。