私は最近PHP 5.4に移動し、OPCacheをインストールしました。非常に強力です!
キャッシュを一時的に無効にするにはどうすればよいですか?
私は試した :
ini_set('opcache.enable', 0);
しかし、効果はありません。
ありがとう
スクリプトを実行したら、ファイルをキャッシュしないには遅すぎます。 PHPの外部で設定する必要があります。
PHPがApacheモジュールとして実行される場合、.htaccess
ファイル:
php_flag opcache.enable Off
PHPがCGI/FastCGIとして実行される場合、.user.ini
ファイル:
opcache.enable=0
そして、いずれにしても、古き良きシステム全体のphp.ini
アクセスできる場合。
opcache.enable はPHP_INI_ALLです。これは、ini_set()doesが現在のみで動作することを意味します現在のリクエストでコンパイルされた残りのスクリプトのOPcacheキャッシュを無効にするリクエスト。 (強制的に有効にすることはできません)。他の要求についてはシステムのデフォルトに戻ります。この段階では、 auto_prepend_file スクリプトでini_setを実行しない限り、リクエストスクリプトはすでにキャッシュされています。
システムのデフォルト(PHP_INI_SYSTEM)は、PHPシステムの起動の一部としてラッチされ、再読み込みできません。たとえば、Apacheの場合、これらを変更/リロードするにはApacheを再起動する必要があります。
.htaccess
php_flag
ディレクティブは、mod_phpまたは同等のものを実行している場合にのみ適用されます。それらと.user.ini
ファイルはPHP_INI_PERDIRであり、リクエストのアクティブ化時にもラッチされます。
今、あなたが尋ねているかもしれないと思うQに。開発システムを使用している場合、最も簡単な方法は、適切なINIファイルにopcache.enable=0
を設定し、Webサーバーを再起動します。=1
に戻し、完了したら再起動します。
また、(開発コンテキストで)opcache.validate_timestamps=on
およびopcache.revalidate_freq=0
の設定を検討してください。これにより、OPcacheが有効になりますが、スクリプトはコンパイル要求ごとに統計され、変更されているかどうかが確認されます。これにより、開発時に両方の長所が得られます。
opcache.blacklist_filename
ディレクティブも参照してください。これにより、除外ファイルを指定できます。これに/var/www/test
が含まれており、Webサービスのdocrootが/var/www
である場合、/var/www/test*
階層内のanyスクリプトはキャッシュされません。
お役に立てれば :)
私の場合、特定のPHPファイルでopcacheを無効にするための最良の方法は次のとおりです:opcache_invalidate(__FILE__, true);
PHP:opcache_reset();
ですべてのキャッシュをリセットすることもできます