我正在尝试配置 APC 以使用我的 Symfony 1.4/Doctrine 1.2 网站。我目前正在使用 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)时遇到的错误:
致命错误:未捕获的异常“Doctrine_Cache_Exception”和消息“必须加载 apc 扩展才能使用此后端!” 在 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 服务器已安装并正常运行,这让我相信我错过了某种 Symfony/Doctrine 配置步骤。
任何帮助将非常感激!谢谢!坦率