2012-04-13 26 views
1

Magento 1.4.2 CEを搭載したサーバーがあり、APC 3.1.9がインストールされ、Magentoはバックエンドキャッシュとして使用するように設定されています。Magento 1.4.2 + APC:キャッシュのクリアは設定変更に影響しません。

キャッシングで奇妙な動作が発生しました。バックエンドで行うすべての変更は、apache2が再起動されるまで表示されません。/ APC opcodeキャッシュがクリアされています。これには、例えば、ウェルカムメッセージを変更するか、Googleアナリティクスを有効/無効にします。

質問:なぜAPCはフルページをキャッシュするのですか?私たちはこの行動を望んでおらず、それは標準ではないようです。バックエンドのあらゆる小さな変更に対して、オペコードキャッシュをクリアする必要があります。マゼンタキャッシュをクリアしても問題はありません。

は完全を期すために、ここに私たちの/etc/php5/conf.d/apc.iniです:

extension=/usr/lib/php5/20090626/apc.so 
apc.enabled=1 
apc.file_update_protection=2 
apc.optimization=0 
apc.shm_size=128M 
apc.include_once_override=0 
apc.shm_segments=1 
apc.gc_ttl=7200 
apc.ttl=7200 
apc.num_files_hint=1024 
apc.enable_cli=0 

も7200s TTLの後には効果がありませんGoogle Analyticsを有効化/無効化。おそらく、現在キャッシュが満杯にならないためです。その容量の40%が約98%のヒット率で使用されます。

これはapc.phpからの完全な設定出力は次のようになります。

apc.cache_by_default 1 
apc.canonicalize  1 
apc.coredump_unmap  0 
apc.enable_cli  0 
apc.enabled   1 
apc.file_md5  0 
apc.file_update_protection 2 
apc.filters 
apc.gc_ttl   7200 
apc.include_once_override 0 
apc.lazy_classes  0 
apc.lazy_functions  0 
apc.max_file_size  1M 
apc.mmap_file_mask 
apc.num_files_hint  1024 
apc.preload_path  
apc.report_autofilter 0 
apc.rfc1867   0 
apc.rfc1867_freq  0 
apc.rfc1867_name  APC_UPLOAD_PROGRESS 
apc.rfc1867_prefix  upload_ 
apc.rfc1867_ttl  3600 
apc.serializer  default 
apc.shm_segments  1 
apc.shm_size  128M 
apc.slam_defense  1 
apc.stat   1 
apc.stat_ctime  0 
apc.ttl   7200 
apc.use_request_time 1 
apc.user_entries_hint 4096 
apc.user_ttl  0 
apc.write_lock  1 
+0

私はMagentoバックエンドキャッシュを無効にするヒントを得ました。これは、APCオペコードキャッシングよりも性能に与える影響が少ないからです。 local.xmlのキャッシュを無効にし、var/cacheをクリアすると本当に助かりました。店舗は以前と同じくらい速いですが、1つの設定を変更するたびにopcodeキャッシュをクリアしなければならなかったバグがなくなりました。 – SebiF

答えて

1

APCは、端末とウェブベースのキャッシュの両方を保持します。 WebベースのURL呼び出しではなくコマンドラインでキャッシュされた「Web」キャッシュのみをクリアできるので、apacheを再起動するとAPC Webベースのキャッシュがクリアされます。ほとんどの場合、同様のスクリプトを使用してキャッシュをクリアするスクリプトをセットアップして、CLIまたはスクリプトから呼び出すことができます。

echo "Clearing APC web cache\n"; 
system('wget --spider --quiet http://localhost/clear_apc_cache.php'); 

echo "Clearing APC command line user cache\n"; 
apc_clear_cache('user'); 

echo "Clearing APC command line opcode cache\n"; 
apc_clear_cache(); 

明らかにあなたがapc_clear_cache();apc_clear_cache('user');

はまた、私はAPCキャッシュを表示する設定にローカルエリアをいただきたい、その中の同じ2つのAPCの内部メソッド呼び出しとclear_apc_cache.php対応するファイルを作成する必要があります同様:

http://www.electrictoolbox.com/apc-php-cache-information/

+0

これはMagentoの奇妙な動作を修正することではありませんが、毎回Webサーバーを再起動する必要はありません。だからこれは受け入れられる。 Btw。私たちはすでにキャッシュ情報を実行しています。テキスト中のapc.phpへの参照を参照してください。 – SebiF

0

またゼロにapc.stat設定することができます。 (apc.stat = 0)をPHP.iniファイルに追加します。

1に設定すると、ファイルの更新が検索されず、パフォーマンスは向上しますが、更新後にApacheの再起動が必要になります。 0に設定すると、ファイルの更新がチェックされ、キャッシュに追加されます(つまり、更新はサイト上に表示されます)。

+1

これは間違っていると申し訳なく思っています。それはまったく逆です。 apc.stat = 1は変更されたファイルをAPCがチェックし、apc.stat = 0は変更されたファイルのチェックを無効にします。質問の設定で選択された設定はOKです。 [phpマニュアル](http://www.php.net/manual/de/apc.configuration.php#ini.apc.stat)を参照してください。 – SebiF

関連する問題