カスタム PHP FastCGI インターフェイス?(もっと早く?)
質問
PHP で独自の FastCGI インターフェイスを構築するにはどうすればよいですか?
似たようなことをしたいのですが 彼らは Perl でやっています, 、ただしPHPです。それは可能ですか?もっと速いでしょうか?
(つまり、Web アプリ フレームワークをロードできるようにしたいのですが、 一度 をメモリに格納し、すべてのリクエストに対して提供したメソッドを FastCGI に呼び出すだけです。したがって、「デフォルト」の PHP FastCGI セットアップで行われる、より一般的な PHP インタプリタのプリロードは行われません。)
乾杯!
(編集:MongrelやRoRもそうなんじゃないでしょうか?)
OK、すごい図を作りました:)
解決
私は誤解されることがあり(それは遅)あなただけのキャッシュのいくつかのフォームをやろうとしていませんか?かかわらず、FastCGIインタフェースはかなり明確に定義されているように見えます。だから、かなり簡単に、あなたがやりたいことが可能であるべきである。
他のヒント
あなたはのないのそれを行うことができます。の中にのPHP ののPHPは、あなたが<のCGI-SAPIのためにCでそれを行うことができます/ EM用>しかし、あなたはおそらく APC の代わりに使用したい。
PHP で作成することを本当に決意している場合は、理論的には次のようにすることができます。 Cでphpモジュールを作成する, 、そしてのための橋を形成します cのfastCGI.
その後、スタンドアロン プログラムとして fastCGI にアクセスする PHP スクリプトを実行し、ループを実行してリクエストを受け入れることになると思います。この場合、PHP を「永続仮想マシン」 (これより適切な用語が見つかりませんでした) として使用し、fastCGI を介して通信します。
いくつかの依存関係ライブラリなどのリロードは、非常に見落とされやすいパフォーマンスの低下であることに同意します。ただし、これは PHP 開発サイクルを簡素化するための意図的な設計である可能性があります。経験の浅いユーザーが永続的な環境で引き起こすグローバル変数の混乱について考えてみましょう。ほとんどの fastCGI セットアップでは、負荷に応じて複数のコピー/スレッドが初期化されるという事実を考慮してください。小さな虫の缶詰です。リクエストごとに白紙の状態から開始すると、リクエストが簡素化されます。
でも、正直に言うと…パフォーマンスが心配な場合は、代わりに fastCGI C++ /node.js を検討することをお勧めします。JavaScript/PHP/C++ 向けに開発した経験があるので、あなたのアイデアは間違いなく実現可能です...とはいえ、結局は費用対効果で決まるのですが…。努力する価値はあるのか?など
追伸:PHP サイトをヒップホップ経由でコンパイルすることも検討できます。