HerokuでPHPをmbstring付きで動かす&パフォーマンス比較
そろそろgithubと並んで使った事が無いなら危機感を感じるレベルなPaaSですが、PHPの場合は何を使っていますか?PHP FogやOrchestra.ioといったPHPに最適化されたプラットフォームもありますが、PaaSの王道とも言えるHerokuでもPHPは非公式にサポートされています。
しかもこれが非公式サポートであるにも関わらず、facebookの開発者コンソールからクリックだけでデプロイできるので密かにメジャーなプラットフォームになっているという不思議な状況です。Ruby界隈では常識かと思われるHerokuがPHP界隈で流行っていない原因に「mbstringがサポートされていない」というのがあります。しかし今回ちょっとやってみたらmbstringをHeroku上にセットアップする事が出来ました。
ひとまずコチラが実際の環境です。
phpinfo() on Heroku
mbstringをherokuで動かした方法
参考にしたのは下記に紹介されていたmongo.soをセットアップする方法です。同じ方法で作成した拡張を読みこまさせてみたら動きました。heroku run bash
を使えばどんな拡張でもビルドできそうですね。
linux - PHP Multibyte String on Heroku - Stack Overflow
作成したPHP拡張モジュールをgithubに公開しています。この拡張をアプリのリポジトリにいれた上で、プロジェクトフォルダ内のphp.iniから読み込ませれば動作しているようです。具体的な例はこのサンプルアプリのリポジトリをご覧ください。
やっている事はHeroku上でビルドしたmbstring.soをプロジェクト内に配置して、php.iniを下記のように記載してこれもプロジェクト内に配置します。
extension=/app/www/mbstring.so
拡張モジュールについては今後はここに集まるかもしれませんね。使いたい拡張があった人はビルドした後にプルリクエストを送るとよさそうですね。
Herokuってパフォーマンスどうなの?
PHPに最適化されているその他の環境ではなくHerokuを使う利点はやはりプラットフォームが大きい事による安定性やパフォーマンスだと思われます。下北沢オープンソースカフェのマスター河村さんが計測してみた所によると、herokuはpagodaboxやphpfogよりもパフォーマンスが良かったようです。
PHPerもHerokuを始めよう
というわけでまだherokuデビューをしていないPHPerはherokuをやってみるといいと思います。アカウントを取得したらやることはそんなに多くありません。
- Heroku Toolbeltのインストール
- heroku create --stack cedar
- git push heroku master
本当に簡単なので是非試してみてくださいー。