先日、Linux上でソケット通信を使ったプログラムを作成しました。

最初はC言語ですべて書こうとしたのですが、DB操作だったり日本語を扱ったりを書くのが面倒になったため、C言語はソケット通信のインターフェース部分だけにとどめ、その他の処理はPHPで書くことにしました。

ただ、当然ながらPHPはC言語に比べると処理速度が遅いのですが、コマンドラインのPHPを速くする方法を調べた結果、高速化を図ることができましたので、ご紹介したいと思います。

結論から言うと

-n オプション(–no-php-ini)を付けることで高速に実行することができます。

これは、マニュアルにも記載がありますがphp.iniを無視するオプションで、PHPのユーザー設定値や拡張モジュール(xxx.so)を読み込まないため高速に実行することができます。

シンプルな使用例

または

設定が必要な場合

とはいえ、デフォルト状態のPHPだけでは物足りない場面もあるので、必要な設定を行う場合には -d オプション(–define)を使用します。

例:PDOの拡張モジュールを読み込む

または

※必要な設定が複数ある場合には、その数の分だけ -d(または –define)を記述します。

どれくらい速くなるか検証

検証用に、1000までの素数を表示するPHPプログラムを書いてみました。

普通に実行した場合

-n オプションを付けて実行した場合

なんと、実測値で 303ミリ秒 → 24ミリ秒 と10分の1以下の速度まで高速化を図ることができました。体感的にもかなりスピードアップしたことを実感できます。(正確には、読み込みのオーバーヘッドが無くなっただけなので、実行速度が常に10分の1以下になるというわけではないですが)

「ちょっとしたスクリプトをPHPで書きたいけど、パフォーマンスが気になる」という場合に試してみる価値はありますので、ぜひ参考にしてみてください。