CentOS5はyumでPHPをインストールすると標準では5.1.6が入ります。WordPressで使いたいプラグインが5.2以上を要求していたので、yumでPHP5.2を入れる方法を探してみました。
ついでにPHPの中間コードキャッシュ「APC」を導入してサイトの速度向上を計ってみました。
環境:
- ServersMan@VPS のEntryプラン
- CentOS 5.4
まず古いPHPを削除します。私の環境では以下のものを削除しました。(/var/log/yum.log で後日確認)
php
php-mbstring
php-pdo
php-common
php-cli
php-mysql
gnupg
curl
次に取得先のGPG-KEYをインポートします。
rpm --import http://www.jasonlitka.com/media/RPM-GPG-KEY-jlitka
リポジトリの設定をします。
$ vi /etc/yum.repos.d/utterramblings.repo
(以下の内容を入力)
[utterramblings]
name=Jason's Utter Ramblings Repo
baseurl=http://www.jasonlitka.com/media/EL$releasever/$basearch/
enabled=1
gpgcheck=1
gpgkey=http://www.jasonlitka.com/media/RPM-GPG-KEY-jlitka
後は普通にyumで必要なパッケージをインストールします。
$ yum install php php-mbstring php-pdo php-pdo-mysql ...
インストールが終わったら、yum update でこのリポジトリが使われないように enabled=1のところを enabled=0に書き換えておきます。
上記で追加した「Jason’s Utter Ramblings Repo」には php-apcも用意されていたので、普通に
$ yum install php-apc
で完了でした。
標準の5.1.6にインストールするには peclを使う方法、他のリポジトリを追加してyumでインストール方法などが紹介されていました。(下部の参考リンクを参照。)
Apacheを再起動してベンチマークしてみます。
Concurrency Level: 5
Time taken for tests: 103.595070 seconds
Complete requests: 50
Failed requests: 0
Write errors: 0
Total transferred: 1881150 bytes
HTML transferred: 1869950 bytes
Requests per second: 0.48 [#/sec] (mean)
Time per request: 10359.507 [ms] (mean)
Time per request: 2071.901 [ms] (mean, across all concurrent requests)
Transfer rate: 17.73 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 2 8.8 0 32
Processing: 1749 10192 22227.7 4236 103562
Waiting: 1198 8469 21650.1 2593 102240
Total: 1749 10194 22232.4 4236 103594
Concurrency Level: 5
Time taken for tests: 66.140733 seconds
Complete requests: 50
Failed requests: 0
Write errors: 0
Total transferred: 1881150 bytes
HTML transferred: 1869950 bytes
Requests per second: 0.76 [#/sec] (mean)
Time per request: 6614.073 [ms] (mean)
Time per request: 1322.815 [ms] (mean, across all concurrent requests)
Transfer rate: 27.77 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 1.1 0 6
Processing: 3831 6405 1900.1 6155 13822
Waiting: 1797 3599 1741.1 3355 10780
Total: 3831 6405 1899.9 6155 13822
およそ40%ほどスピードアップしているようです。
ちなみに /etc/php.d/apc.ini にapc関連の設定があって共有メモリのサイズ(apc.shm_size)を128に増やしてベンチマークしてみましたが特に有意差はありませんでした。
キャッシュされるソースコードの量が増えてくるとこのパラメータが効いてくるようです。
以下のサイトを参考にさせていただきました。ありがとうございます。
CentOSのPHPを5.2にする。ついでにAPCも入れてみました。 はコメントを受け付けていません
Teeple2 にデータベースマイグレーション機能を追加しました。これによりコマンド一発でデータベースの変更を適用し、エンティティクラスもそれに合わせて更新できるようになりました。
マイグレーション機能はシステムリリース後もそうですが、開発中も複数人で開発している場合は特に有用です。
まずmigrationディレクトリにDataSource名でディレクトリを作成します。
その中にデータベースに適用したいDDL文を NNN-somename.sql という形式で配置します。
「NNN」は001のようにバージョンを数字で表します。
ハイフン、またはアンダースコア以降は適当なファイル名で構いませんが拡張子は.sqlにする必要があります。
次に以下のコマンドを実行して差分を適用します。
$ php cli.php Teeple_Migration
(cli.phpはbinディレクトリにある)
エンティティも同時に上書きしたい場合は –entityをつけます。
$ php cli.php Teeple_Migration --entity
※ Entity_Base_* が更新されます。
Teeple2にデータベースマイグレーション機能を追加 はコメントを受け付けていません
PHPでケータイサイトを作る際に非常に便利に使わせていただいているのが「らくらくケータイ3キャリアコンバーター(仮名)」です。(詳しくはke-tai.org > Blog Archive > PHPを使って3分で作る3キャリア対応ケータイサイト をご覧ください。)
簡単にいうと以下のようにやると3キャリア対応のケータイサイトが1つのソース(HTML)で実現できます。
- HTML(テンプレート)はXHTMLでShift_JISで書く
- 絵文字はドコモのunicode形式で書いておく (これを上記モジュールで出力時に変換する)
さてここでフォームの入力モード(docomoだとistyleとか)を指定したい場合にはどうしたらよいでしょうか?
「ケータイ xhtml 入力モード」とかでぐぐると以下のようなサイトがヒットします。
これらのサイトで述べられていることをまとめると以下のようになります。
- style属性でwap-input-formatを各キャリア仕様分並べて書いてやれば3キャリアとも機能する
- ただしSoftBankの一部の機種(特にSHARP)で入力制限モード(指定したモード以外の文字種が入力できない状態)になってしまう
大体のサイトでは2の条件はNGだろうと思うので結論としては「絵文字のように出力時に置換してやる方法しかない」ということになります。
そこで、「らくらくケータイ3キャリアコンバーター(仮名)」には docomoのときだけ istyle を wap-input-format に変換する関数が用意されていますがこれを拡張して3キャリア対応の関数を追加しました。
/**
* 入力モード指定変換(全キャリア)
*
* iモード用の入力モードの変換を行う
*
* @param string $input 変換対象の文字列
*
* @return string 変換後の文字列
*/
function convert_istyle($input, $agent)
{
$rep_arr_master = array(
'DoCoMo' => array(
'istyle="1"' => 'istyle="1" style="-wap-input-format:"*<ja:h>";"',
'istyle="2"' => 'istyle="2" style="-wap-input-format:"*<ja:hk>";"',
'istyle="3"' => 'istyle="3" style="-wap-input-format:"*<ja:en>";"',
'istyle="4"' => 'istyle="4" style="-wap-input-format:"*<ja:n>";"'
),
'SoftBank' => array(
'istyle="1"' => 'mode="hiragana" istyle="1" format="*M"',
'istyle="2"' => 'mode="hankakukana" istyle="2" format="*M"',
'istyle="3"' => 'mode="alphabet" istyle="3" format="*x"',
'istyle="4"' => 'mode="numeric" istyle="4" format="*N"'
),
'EZweb' => array(
'istyle="1"' => 'istyle="1" format="*M"',
'istyle="2"' => 'istyle="2" format="*M"',
'istyle="3"' => 'istyle="3" format="*x"',
'istyle="4"' => 'istyle="4" format="*N"'
),
);
$carrier = KetaiConverter::getCarrier($agent);
if (! preg_match('/DoCoMo|SoftBank|EZweb/', $carrier)) {
return $input;
}
$rep_arr = $rep_arr_master[$carrier];
$output = $input;
preg_match_all('/<input (?:.*)(istyle=("|\')?[1-4](?:"|\')?)(?: (?:.*?))?>/i', $input, $arr); // inputタグを検索し、配列に格納
for ($i = 0; $i < count($arr[0]); $i++) {
// 必要な変数を取得
$target = $arr[0][$i]; // 置換対象
$istyle = $arr[1][$i]; // istyle属性
$quote = $arr[2][$i]; // クォート
$replacement = strtr($target, $rep_arr);
$output = str_replace($target, $replacement, $output);
}
return $output;
}
// istyleの変換
$output = KetaiConverter::convert_istyle($output, $agent);
※convert()内でDocomoのときに呼び出されている istyle_imode()はコメントアウトしておきます。
今のところこのような形で運用していますがAUの一部の機種でどうしても「入力制限モード」になってしまうことがあるようです。調べた結果AUの仕様の書き方が曖昧で、これはどうしようもないとの結論に至っています。
「らくらくケータイ3キャリアコンバーター(仮名)」はこのようにケータイサイトの出力時にいろいろ変換をかませるモジュールとして大変便利でカスタマイズしやすくなってます。
たとえばこれ以外にも
- formのaction属性にguid=ONをつける
という変換なども加えて使っています。
このような便利なモジュールを公開してくださったke-tai.orgさんに感謝です。
viewer.php
PHPのケータイ絵文字変換モジュール「らくらくケータイ3キャリアコンバーター(仮名)」に入力モード指定変換機能を追加 はコメントを受け付けていません