2011-01-10 7 views
0

私はパフォーマンス上の理由から、CGIモードからモジュールモードにPHPを変換しています。phpモジュール - コードはJavaのようなログインで初めて実行する必要があります

CGIモードでは、毎回PHPコードが実行されていました。私はこの変換で PHPコードがJavaのようにメモリ内で実行されるという気持ちがありました。つまり、ユーザーが最初にログインしたときにユーザークラスがインスタンス化された場合、メモリー内のクラスとして残ります。しかし、そうは思わない。すべてのコード は毎回実行する必要があります。

JavaのようにPHPを実行する方法はありますか?

おかげ

+0

あなたは正確に何をしようとしていますか? –

答えて

0

私はあなたの質問に完全に明確ではないけど、あなたはロード時間を短縮するために、PHPファイルのバイトコードをキャッシュについて尋ねている場合、私はAPCを使用してになります(http://php.net /manual/ja/book.apc.php)。

これはあなたのPHPのバイトコードをキャッシュし、変更されていないクラスをロードするのに要する時間を大幅に短縮します。

+0

私はAPCを見て、それは多くの助けになりました。コードは50%高速です。 –

+0

私はAPCについて別の質問をしました。私は新しいスレッドを作成する必要があるかどうかはわかりません。私は理想的には2つのキャッシュを持っています.1つは共通のインクルード用、もう1つは要求に基づいて動的に構築/フラッシュされています。私は、キャッシュが完全に動的である(新しいページが追加されたときに古いページが破棄される、apc.user_ttlが0になる)か、静的である(キャッシュが完全に最初に取得されたときに、ページを追加できないことをapc.user_ttl = 0)また、理想的には、(PHPモジュール経由で)httpdサーバーの開始時にページをプリロードするのが好きですが、このオプションが利用可能であるように見えません(apc.preload_pathを試みましたが、動作しないようです)。ありがとうございます –

+0

別の質問かもしれません - 特に私はAPCの専門家から遠いので、あなたがAPCでそれをタグ付けすると1つを得るかもしれません。いくつのPHPファイルについて話していますか?あなたが何万人も話しているのでなければ、APCに適度な量のメモリを与えることは、それ以上の仕事をするだろうと私は思うでしょう。 – Preston

2

いいえ、PHPのモジュールバージョンは、その点でCGIバージョンと同じように動作します。したがって、要求間でクラスを「メモリ内に」維持することはできません。

したがって、リクエストの間にデータを保存/シリアル化する必要があります。つまり、すべてのリクエストは「新しい」スクリプトで処理されるため、セッションを使用する必要があります。

"Application Server"を使用しますが、PHPはそのように動作しません(AFAIK)。PHP Apacheモジュールはアプリケーションサーバーではありません。

+0

ありがとうございます。それはそれを説明する。 –

関連する問題