symfony camp 2008が始まってます

PHPフレームワークsymfonyのカンファレンスsymfony camp 2008がオランダで開催中です。

Fabienさんの初日のレポートで、さっそく面白いプレゼン資料が出てきてるので紹介します。(写真みたら、ほんとに「キャンプ」してるんですね)

この中で僕が興味を持ったのは、3番目のYahoo!でのsymfonyの使われ方の話と、4番目のチューニング話。

Yahoo!のほうは、大成功しているQ&AサイトのYahoo! Answersなどがsymfonyベースで動いていることの説明。初出じゃない話ですけど、なぜsymfonyを選定することに至ったかとか、大規模サイトの設計で考慮した点とか、symfonyから何を使って何を使わなかったかという取捨選択の話、そして最近公開されてきてますけど、Yahooが作った数々のsymfony pluginsについて(p.24)、などが語られています。

チューニングのほうは、symfony+PHP+Apache等で性能を稼ぐためのポイントがよくまとまってます。

Yahoo!のDustin Whittleさんがプレゼン資料の最後につけてくれた6冊の「オススメ本リスト」、日本語訳が出てるものが多いです。

[am]1590597869[/am]
[am]067232699X[/am]
[am]4873112095[/am]
[am]4873113113[/am]
[am]4873113644[/am]
[am]487311361X[/am]

僕は3冊読んでました。集合知プログラミングはまだ買ってないんだけど、読まなきゃなと思ってます。

WindowsでPHPをビルドするビデオ

WindowsでのPHP(php.exe)のコンパイル手順をわかりやすくするための改善が続けられているそうです。このWikiページあたり(バッチファイルも)に必要な情報は載っていて、Visual Studioのしかるべきバージョン(PHPのバージョンによって最適なものが違う。ここ参照)があれば数分でできるということ。

実機でphp.netからソースや必要なツール一式をダウンロードし、ビルドする様子を収めた解説ビデオというのもあり、このビデオに従っていけば、手元でWindows版のPHP実行ファイルを作ることも可能、と。PHP-5.2.6の配布物の問題でファイルのリネームが一箇所必要ですが(5.2.7では不要になります)、実際非常に簡単になっているなあ、と。

# 家にVC++無いから今試せないですが。

無料のVisual C++ 2005 Express Editionを使う話はDo You PHP?に載ってますね。これ、2008と最新のPHPビルドシステムだとどうなるんでしょうか。

via Extension development on windows – experimentalworks

Windows+PHP+memcached+symfony

PHPマニュアル memcache

Windows用のmemcachedもバイナリパッケージで入手できるもんですね。手元の開発環境でどうしようかと思ったら、なんでもあるもんだ。

memcached-win32 Windows用のmemcached。サービス版とコマンド版両用 バイナリ版をzipで展開して適当な場所に置く

peclのWindows用バイナリ配布pecl4win からmemecahed拡張をダウンロード。5.2.5用はないので5.2.1用を。php-5.2.5/extとかに置く。

php.iniを編集して、extention=php_memcache.dll を追加。(Apache再起動)(このバイナリのdllにはmemcacheで”d”はついてないので注意)

sfMemcachePluginを、自分のsymfonyで作ったプロジェクトに入れる。

> symfony plugin-install http://plugins.symfony-project.com/sfMemcachePlugin

関数キャッシュのmemcached化の使用レポートin日本語を参考に、設定を行なう。

config_handlers.ymlとmemcache.ymlを、(アプリ名)/config/ にコピー。memcache.ymlの中のポート番号などは自分が動かしているmemcachedの設定に合わせて変更する。

conf/factories.ymlで、ViewをキャッシュするクラスをsfMemcacheCacheに置換する。

view_cache:
  class: sfMemcacheCache

もちろん、自分のsymfony appはテンプレートキャッシュを使う設定になってないといけない。開発環境でもcacheをオンにする設定は、たとえば、(apps)/settings.ymlにて

all:
  .settings:
    cache:     on

(apps)/cache.ymlにて

all:
  enabled:     on
  with_layout: false
  lifetime:    86400

など。(実際にはこんな乱暴に全actionにキャッシュをかけちゃだめ)

あとは、設定を反映させるために、symfonyキャッシュをクリア

> symfony cc

で、実行する。devモードの場合、一回目表示される水色の「キャッシュがなかったので作ったよ」マークが二回目の表示で黄色になればOK。

実行した結果、memcachedが本当に使われているかどうかを確認するには、memcachedの内容を確認するにはにあるようなスクリプトでmemcachedの状態を表示します。

[追記] クライアント側のライブラリだからdがついてない、とelfさんに指摘いただきました。考えてみればそうですね。

twitter、Ruby on Railsを破棄の噂

最新号のTIMEで世界で最も影響力のある100人に選ばれた(まじですか)テッククランチの主宰マイケル・アーリントン。弁護士からプロブロガーに転進して数年でウェブ業界のキングメーカーになった暴れん坊が、twitterがRailsを断念してPHPかJavaでシステムを作り直そうとしてるという噂をつかんだそうで。

一旦情報が集まりだすと、誰もがTechCrunchにネタを提供しようとして、なんでもそこに集まるんでしょうねえ。この記事はTC日本版にも翻訳されて出てくるでしょう。[Update] TCJの人は仕事が速い。もう出てた

RailsやRubyはダメだった、PHPやJavaならうまくいく、という話は、最近とみに貶められることが多いPHP/Javaをメインに使うプログラマとしては「それみたことか」と言いたくなる部分も無いというと嘘になります。でも、言語の問題じゃないよねえ。

複雑なシステム(twitterなんて簡単に作れる、と言うかもしれないけど、簡単な内容でも大規模にスケールさせるならそれだけで複雑になる)が手に負えなくなったときに言語やフレームワークを変えるというのは、担当者の逃げとか問題の先延ばしであることが往々にしてあるような気もするのですけど。