0

Symfony 1.4/Doctrine 1.2 Web サイトで動作するように APC を構成しようとしています。現在 WAMP 2.1 を使用しており、APC 拡張機能を正常にインストールしました。phpinfo() を実行すると、APC が有効になっていることを示す説明が表示されます。

apc
APC Support enabled
Version 3.1.6
APC Debugging   Disabled
MMAP Support    Disabled
Locking type    File Locks
Revision    $Revision: 303642 $
Build Date  Dec 1 2010 21:08:06

Directive   Local Value Master Value
apc.cache_by_default    On  On
apc.canonicalize    On  On
apc.coredump_unmap  Off Off
apc.enable_cli  Off Off
apc.enabled On  On
apc.file_md5    Off Off
apc.file_update_protection  2   2
apc.filters no value    no value
apc.gc_ttl  3600    3600
apc.include_once_override   Off Off
apc.lazy_classes    Off Off
apc.lazy_functions  Off Off
apc.max_file_size   10M 10M
apc.num_files_hint  1000    1000
apc.preload_path    no value    no value
apc.report_autofilter   Off Off
apc.rfc1867 Off Off
apc.rfc1867_freq    0   0
apc.rfc1867_name    APC_UPLOAD_PROGRESS APC_UPLOAD_PROGRESS
apc.rfc1867_prefix  upload_ upload_
apc.rfc1867_ttl 3600    3600
apc.shm_segments    1   1
apc.shm_size    64M 64M
apc.slam_defense    On  On
apc.stat    On  On
apc.stat_ctime  Off Off
apc.ttl 0   0
apc.use_request_time    On  On
apc.user_entries_hint   4096    4096
apc.user_ttl    0   0
apc.write_lock  On  On

ただし、symfony の ProjectConfiguration.class で APC を使用するようにクエリ キャッシュを設定しようとすると、APC 拡張機能が読み込まれていないというエラーが表示されます。

  public function configureDoctrine(Doctrine_Manager $manager)
  {
      $manager->setAttribute(Doctrine_Core::ATTR_QUERY_CLASS, 'Doctrine_Query_Extra');
      $manager->setAttribute(Doctrine_Core::ATTR_QUERY_CACHE, new Doctrine_Cache_Apc());  //use APC to query cache
  }

キャッシュのクリア (php symfony cc) を実行したときに発生するエラーは次のとおりです。

致命的なエラー:「このバックエンドを使用するには、apc 拡張機能をロードする必要があります!」というメッセージのキャッチされない例外「Doctrine_Cache_Exception」C:..\lib\vend または\symfony-1.4.14\lib\plugins\sfDoctrinePlugin\lib\vendor\doctrine\Doctrine\Cach e\Apc.php:44

私はどこでもグーグルで調べてきましたが、それを理解できないようです。WAMP を再起動してもダメでした。ダウンロードした APC 拡張機能に問題があるのではないかと考えています。WAMPSERVER 2.1にはVC6コンパイルバージョンを使用する必要があると読んだので、そうしました。「php_apc_316_php53_vc6.dll」というラベルの付いたバイナリを見つけました。phpinfo() で有効になっていることがわかるという事実は、正しくインストールされていることを意味するはずですか? ProjectConfiguration.class にその行を追加する前に、いくつかの symfony 構成が欠落していますか? 余談ですが、memcache サーバーがインストールされ、適切に実行されているにもかかわらず、memcache をクエリ キャッシュとして使用しようとすると、まったく同じエラーが発生します。

どんな助けでも大歓迎です!ありがとう!フランク

4

1 に答える 1

0

理解した。簡単な修正であることがわかりました。CLI で使用していた php は、APC をセットアップした php バージョンとは異なるバージョンに関連付けられていました。私の wampserver には 2 つのバージョンの PHP セットアップがあります。Windows 7 のパス環境変数が間違った php バージョン ディレクトリに設定されていました。そのため、「php symfony cc」を実行すると、間違ったバージョンの php が使用されていました。

クレジットはこちら: http://oldforum.symfony-project.org/index.php/m/93957/?srch=memcached#msg_93957

これが誰かに役立つことを願っています。

于 2012-06-28T18:08:24.527 に答える