2009-06-01 11 views
2

PHPで独自のFastCGIインターフェイスを構築するにはどうすればよいですか?カスタムPHP FastCGIインターフェイス? (高速?)

私はthey're doing in Perlと似ていますが、PHPで何かしたいと思います。それも可能ですか?それは速くなるでしょうか?

(つまり、にメモリにロードしてから、すべてのリクエストに対してFastCGIで呼び出すメソッドを呼び出すことができるようにしたいのですが、PHPの一般的なプリロード-interpreterが "デフォルト"のPHP FastCGI設定で行われています)。

歓声!

編集は:雑種とRoRのは、同様にこれをやっていませんか?)

[OK]を

私は今freakinの図を作った:)

alt text

+0

はい、MongrelとRoRがこれを行っています。 RoRはMVCアプリケーションを作成し、Mongrelは必要なメソッドを呼び出します。しかし、私はFastCGIを使って作業する方法が分からないので、それを模倣する方法を教えることはできません。 –

答えて

1

私は誤解されます(遅いですが)何らかの形でキャッシュしようとしていませんか?それにもかかわらず、FastCGIインターフェイスはかなりよく定義されているようです。だから、あなたが望むものを、かなり簡単に行うことができるはずです。

+0

さて、キャッシュはPHPと一緒に行く方法です。私が本当に探しているのは、メモリに_and_ initiliazedをロードしたPHPコードを持つことです。多くのオブジェクトを持つフレームワークを想像してみてください。今はすべてのコードをすべての要求に対して初期化する必要があるようです。 (たとえこのプロセスがバイトコードをキャッシュすることによってスピードアップされたとしても)私はすべてを一度セットアップする能力を持つフレームワークを書くことができるようにしたいと思います。私は推測:)これは賢明なPHPのキャッシュ機構に直面して意味をなさないかもしれません。知りません。 – 0scar

+0

しかし、これは記憶をもっと奪いません。 – sybreon

+0

実際には、ヒープはおそらくすべての要求で大きくなり、大きくなるでしょう。しかし、理論的には、いいえ。あなたは同じものをロードしています。すべてのリクエストではなく、リクエストの前に一度だけ実行します。 – 0scar

0

あなたはは PHPのためのPHP でそれをを行うことはできません、あなたはのcgi-SAPIのためにCでそれを行うことができますが、あなたはおそらく代わりにAPCを使用します。

+0

これは本当に確実ですか?何故なの? – 0scar

+0

私の悪い、私はfastcgi sapiを実際に意味しました。 @Oscar:あなたはなぜそれがあなたが期待することをしないのか尋ねていますか? http://php.net/apcをご覧ください。あなたのニーズを解決します。 – jpic

0

実際にPHPであると判断された場合は、理論上はcreate a php module in cとなり、fastCGI in cのブリッジを形成できます。

その後、fastCGIにアクセスするPHPスクリプトをスタンドアロンプ​​ログラムとして実行し、ループを実行してリクエストを受け入れます。 PHPを「永続仮想マシン」(より良い用語を見つけることができませんでした)として使用する場合、fastCGI経由で通信します。

あなたの依存関係ライブラリのいくつかをリロードすることは非常に簡単に見過ごされていることに同意します。しかし、PHP開発サイクルを単純化することで意図的な設計になっている可能性があります。永続的な環境では、経験の浅いユーザーが作るグローバル変数混乱を考えてください。ほとんどのfastCGI設定では、負荷に応じて複数のコピー/スレッドが初期化されます。その小さな虫の缶。リクエストごとに空白の新しいスレートを開始すると、スレートが簡単になります。

しかし、正直言って...あなたがパフォーマンス上の懸念を抱えている場合は、代わりにfastCGI C++/node.jsを検討することもできます。JavaScript/PHP/C++用に開発されたことは間違いありません。 ..しかし、それは本当に費用便益に沸騰する...努力する価値があるか?など

PS:ヒップホップでPHPサイトをコンパイルすることも考えられます。