3

APC を使用して、PHP ファイルの読み込み時間を短縮しています。100 を超える配列を定義する 1 つのファイルを除いて、私のファイルは非常に高速に読み込まれます。この 270 KB のファイルは、読み込みに 200 ミリ秒かかります。残りのファイルは、オブジェクト、メソッド、および関数でいっぱいです。

私は疑問に思っています: OP コードのキャッシュは配列に対しても機能しませんか?

私の APC キャッシュは、すべてのクラスを処理するのに十分な大きさでなければなりません。現在、キャッシュの 40% が無料です。私の命中率は99%です。

apc.shm_size=32 M
apc.max_file_size = 1M
apc.shm_segments= 1

APC 3.1.6

PHP 5.2、Apache 2、および Windows Vista を使用しています。

4

3 に答える 3

2

すべての配列は、キャッシュに保存するときにシリアル化してから、キャッシュから読み込むときに再度シリアル化を解除する必要があります。これには時間がかかり、速度低下の大きな要因になる可能性があります。(参考までに:シリアル化)

シリアル化を少し高速化する1 つの方法は、 igbinaryapc.serializer=igbinaryを使用することです。 igbinary は、php.ini または APC を経由する ini ファイルに配置することで、APC とシームレスに使用できます。(注: これには APC >= 3.1.7 が必要です)

apc.stat (同じ ini ファイル内) を 0 に設定して、ファイルの変更を毎回ではなく 1 回だけチェックすることもできます。

于 2012-07-03T01:05:10.903 に答える
1

opcode キャッシングについての 1 つのことは、正しく構成されていない限り、変更を探すために各ファイルを stat し続けることです。多くのファイルを解析してオペコードに変換する必要がある場合、これはかなりのオーバーヘッドを引き起こす可能性があります。

通常、 を設定すると、パフォーマンスが大幅に向上しますapc.stat = 0apc_clear_cache()ただし、コードを変更するには、 apacheを呼び出すか再起動する必要があることに注意してください。

http://www.php.net/manual/en/apc.configuration.php#ini.apc.stat

于 2012-07-03T01:37:15.707 に答える
0

問題は、gettext ライブラリを使用してすべてを翻訳することでした。約 1000 の関数呼び出しを取り除くと、読み込み時間が 200 ミリ秒から 6 ミリ秒に短縮されます。

私の推測では、データのシリアル化も問題ですが、それは二次的な問題です。

于 2012-07-05T21:13:14.037 に答える