「WordPressで学ぶPHP(1)変数・制御構造編」が発売されました。
「WordPressで学ぶPHP」シリーズの第1巻で、WordPressを通してPHPを学んでいく本です。
この本では、PHPの基本となる変数と制御構造について解説します。
Kindle本で、定価500円です。
遅まきながらmod_perl
先日のYAPC::ASIA Tokyo 2012で、「モダンmod_perl入門」というセッションを受講しました。
それに触発されて、ローカル環境のApache 2.2にmod_perlを入れてみました。
mod_perlは、「ApacheにPerlを組み込んで、CGIを高速化する仕組み」ととらえている方が多いと思います。
ただ、CGIの高速化は、mod_perlの一機能に過ぎません。
それよりも、「ApacheのモジュールをPerlで作ることができる」という点の方がはるかに大きいです。
Apacheの処理フェーズの各所に、Perlでの処理を挟むことができます。
セッションの中で、モジュールの一例として、HTMLをクライアントに出力する前に、HTML内の改行を除去する話が紹介されていました。
私も実際に試してみました。
まず、以下のようなPerlのモジュールを作り、@INCのパスのどこかに配置します。
package MyApache2::RemoveCR; use APR::Table (); use Apache2::Filter (); use Apache2::RequestRec (); use Apache2::Const -compile => qw(OK); my $READ_CHUNK_LENGTH = 2048; sub handler { my $f = shift; unless ($f->ctx) { $f->r->headers_out->unset('Content-Length'); $f->ctx(1); } while ($f->read(my $buffer, $READ_CHUNK_LENGTH)) { $buffer =~ s/[\r\n]//g; $f->print($buffer); } return Apache2::Const::OK; } 1;
そして、Apacheのhttpd.confファイルに、以下の記述を追加します。
<FilesMatch ".*html$"> PerlOutputFilterHandler MyApache2::RemoveCR </FilesMatch>
最後に、Apacheを再起動して、WebブラウザでHTMLにアクセスします。
HTMLのソースを見てみると、無事に改行がすべて削除されました。
Movable TypeのDynamicMTMLのような仕組みを、mod_perlで書くと面白いのではないかと思います。
時間を作って試してみたいです。