FastCGI を使用すると、PHP アプリ/フレームワークをメモリに 1 回だけロードできますか?
-
06-09-2019 - |
質問
FastCGI を使用すると、Web アプリに一度ロードできるようになり、その後は FastCGI に次のような機能を「提供」するだけになるという印象を受けました。 myHandleHTTPRequest($url)
, 、リクエストが来るたびに呼び出されます。この方法では、アプリが常にメモリ内で準備ができているため、パフォーマンスが大幅に向上します。
しかし、そうではないと私は理解し始めています。それとも私が間違っているのでしょうか?
PHP は FastCGI によってロードされているように思えますが、これで多少の改善は見られますが、 私の アプリは引き続きリクエストごとにリロードされます。
アプリを 1 回ロード (または「フレームワーク」を読み取り) したいのですが (その後、たとえば 500 リクエストごとにリロードします)、それはできますか?
編集:この質問は次のように言い換えられました。 カスタム PHP FastCGI インターフェイス
解決
そうですね、すべてのことを多かれ少なかれ忘れることで、それができます。 派手な PHP 統合機能 (これが General-Purpose-PHP-Interpreter-As-FastCGI を提供するものです) そして、アプリケーション自体を FastCGI サーバーとして作成します。
それはまったく別のトピックですが、調べてみるとよいでしょう Perl アプリはどのように対処するか ガイドのために。
他のヒント
fastcgi が行うことは、(cgi が行うように) すべてのリクエストに対して php インタープリタを生成することを避けることです。これにより、mod_php とほぼ同様に PHP インタプリタがメモリ内に保持されるため、処理時間が大幅に節約されます。
パフォーマンスを向上させるためにできることは次のとおりです。
- 使用 APC, 、または xcache など。すべての PHP ファイルを透過的にプリコンパイルし、リクエストごとの再コンパイルを回避します。
- キャッシング。Apc などは、リクエスト間でも有効期間を持つ変数を保存するメカニズムを提供します。これを使用して、リクエスト間で処理されたデータを共有し、アプリケーション データをメモリ内に保持できます。