6

は以前に WAMP Server と PHP 5.3でこの問題を抱えていましたが、現在は Linux と PHP 5.4 で直面しています。

基本的に、apc.php の統計に関係なく、APC を有効または無効にしてもパフォーマンスに違いはありません。

以下は、30 を超える Doctrine PHP ファイルを含むサンプル テスト スクリプトです。

$t = microtime(true);
include 'Doctrine/ORM/Mapping/Driver/DoctrineAnnotations.php';
printf('%.3f s', microtime(true)-$t);
  • Windows での結果 ( Zend Server CE、PHP 5.4 ):0.001 s
  • Linux での結果 ( PHP 5.4 & APC 3.1.11 ):0.106 s

注: 上記のスクリプトに表示されていなくても、実際にはファイルへのフル パスを使用しており、include_path には依存していません。

Linux で得られる結果は であっても であっても同じであるため、オペコードのキャッシュが機能していないようですapc.enabled01

ただし、次のようにapc.php述べています。

apc.php

パッケージ ( remi リポジトリ、CentOS 6.3 から):

php-5.4.5-1.el6.remi.x86_64
php-pecl-apc-3.1.11-1.el6.remi.1.x86_64

APC 構成:

apc.enabled=1 
apc.shm_segments=1
apc.shm_size=64M
apc.num_files_hint=1024
apc.user_entries_hint=4096
apc.ttl=7200
apc.use_request_time=1
apc.user_ttl=7200
apc.gc_ttl=3600
apc.cache_by_default=1
apc.file_update_protection=2
apc.enable_cli=1
apc.max_file_size=1M
apc.stat=1
apc.stat_ctime=0
apc.canonicalize=0
apc.write_lock=1

最後に、はい、PHP は APC が有効であると報告します。

var_dump(extension_loaded('apc')); // (bool) true
4

1 に答える 1

3

問題の重要な部分について言及するのを忘れました。WebサーバーはWindows7のLinux仮想マシンで実行されており、ホスト上の共有フォルダーからファイルを読み取っています。

APCの速度を低下させるstatのは、この共有フォルダー上のファイルに影響を与えることです。

ファイルを仮想マシンにコピーすると、問題が修正されます。

しかし、それだけでは問題が解決しないことに驚いています。一度だけファイルに問題が発生し、その後、メモリ内キャッシュからすべてを無条件に読み取ることapc.stat=0を期待していました。stat

于 2012-08-09T09:10:29.857 に答える