web-dev-qa-db-ja.com

APCキャッシュビンのより良いハンドルを取得する/ settings.phpのコード

VPSでAPCを起動して実行し、 APCモジュール をDrupal 7サイトにインストールしました。 ドキュメントはこちら =そしてこのコードを私のsettings.phpファイルに追加しました:

_$conf['cache_backends'] = array('sites/all/modules/apc/drupal_apc_cache.inc');
$conf['cache_default_class'] = 'DrupalAPCCache';
//$conf['apc_show_debug'] = TRUE;  // Remove the slashes to use debug mode.
_

しかし、APCの下の私のサイトのステータスページには、次のように書かれています。

_APC has been running for 3 min 54 sec. Currently caching 0 entries (0 bytes).
_

私にとって "0エントリ"は、作成/使用されているキャッシュがないことを示していました。いくつか調べてみたところ、追加する必要のあるコードが追加されている可能性があるようですが、どこにもドキュメントが見つかりません。

私はこのスニペットを見つけましたが、それが必要かどうか、それがどの部分を使用することになっているか、そしてそれが何をするのか本当にわからないので、このドキュメントは見つかりませんでした。これがキャッシュを機能させるものだと思います。

_'page_cache_without_database' => TRUE,
        'page_cache_invoke_hooks'     => FALSE,
        'page_cache_maximum_age'      => 3600,
        'cache_lifetime'              => 0,
        /* my note -- noticed "cacherouter" in the path below 
         so I am guessing this needs to be adapeted to the path for APC?? */
        'session_inc'      => './sites/all/modules/cacherouter/session.inc',
            'cache_default_class'               => 'DrupalAPCCache',
            'cache_class_cache'                 => 'DrupalAPCCache',
            'cache_class_cache_block'           => 'DrupalAPCCache',
            'cache_class_cache_bootstrap'       => 'DrupalAPCCache',
            'cache_class_cache_content'         => 'DrupalAPCCache',
            'cache_class_cache_filter'          => 'DrupalAPCCache',
            'cache_class_cache_form'            => 'DrupalAPCCache',
            'cache_class_cache_menu'            => 'DrupalAPCCache',
            'cache_class_cache_page'            => 'DrupalAPCCache',
            'cache_class_cache_pathdst'         => 'DrupalAPCCache',
            'cache_class_cache_pathsrc'         => 'DrupalAPCCache',
            'cache_class_cache_session'         => 'DrupalAPCCache',
            'cache_class_cache_session_user'    => 'DrupalAPCCache',
            'cache_class_cache_update'          => 'DrupalAPCCache',
            'cache_class_cache_users'           => 'DrupalAPCCache',
            'cache_class_cache_views'           => 'DrupalAPCCache',
            'cache_class_cache_views_data'      => 'DrupalAPCCache',
      );
_

この問題について何か助けていただければ幸いです。

phpinfo()から返されるAPC拡張機能に関する情報は次のとおりです。

screenshot

5
Danny Englander

「APCは3分54秒実行されています。現在0エントリ(0バイト)をキャッシュしています。」

このメッセージは、APCが各phpリクエストに対して個別に実行され、最終的には何もキャッシュしないことを示唆しています。

私は同様の issue を持っていましたが、もう一度PHPを設定する必要がありましたが、別のモードです。

APCは、FPM/FastCGIモードのApache/2 + php 5.3.x + php-fpm + fcgiで複数のプロセスに対して正常に機能します。

PHP 5.3.xは、次のオプションで構成されています--enable-force-cgi-redirect --enable-fastcgi --enable-fpm

私のphp情報のAPCセクションで私は見ることができます:

APCサポート=有効化シリアル化サポート= php MMAPファイルマスク= /tmp/apc.something |ここで、何かはランダムな6文字の文字列です

Phpinfoを確認してください

PHP Configureコマンドには、 '-enable-fastcgi'および '--enable-fpm'が必要です。

サーバーAPIの場合:FPM/FastCGI

Cgi-fcgiセクションがあるかどうか、およびphp-fpmが「アクティブ」に設定されていることが確認できるかどうかを確認します

注:PHP 5.2.x以前を使用している場合は、別の解決策がある可能性があります。

6
Refineo

APCは、頻繁に変更されないキャッシュの小さな部分にのみ使用してください。したがって、おそらくページなどではありません。 (APCを使用するのが賢明な実際のビンは、サイトによって異なります...たとえば、変数やメニュー)。

実際、データのキャッシュを開始する前に、まずキャッシュスクリプトの設定を微調整します(そのため、そのモジュールを有効にします)。

スクリプトapc.phpを使用して、スクリプトをキャッシュするために使用されたメモリの量を確認し、APCに十分なメモリを与えるようにしてください(デフォルトの設定-この場合32Mは必ずしも十分ではありません)-そうでない場合、キャッシュはさらに悪化する可能性があります-何度もキャッシュを試行してサイトの速度を低下させる。リソースが限られている場合は、公平な配分をすることを恐れないでください-成果はあります(調整されたapcは、RAMページビューあたり)の量を少なくすることができます)。

私はまた、いくつかのディレクトリをキャッシュしないで遊んでいました(たとえば、多くのファイルやビューの管理部分を持つクレイジーなモジュール)。また、デフォルトの設定では、VPSにすべてのphpファイルをキャッシュしようとしていることを覚えておいてください... 2つのdrupalを並べて実行することでも問題が発生する可能性があります(新しくアクセスしたコードが古いファイルをキャッシュから押し出す)-制限することをお勧めしますそれは1羽の羽口に。

これは http://php.net/manual/en/apc.configuration.php とdrupalに関連するもの: http://xerosphere.net/optimizing-apc-for-drupal

3
mojzis