我在共享主机上使用带有doctrine2的APC缓存。
我已经托管了同一项目的多个实例,但版本不同。所以我不希望它们共享相同的缓存。
例如,我有以下托管网址:
http://phpdemo.******.com:9040/ilook/qa
http://phpdemo.******.com:9040/ilook/android
http://phpdemo.******.com:9040/ilook/dev
http://phpdemo.******.com:9040/ilook/client
有没有办法区分它们的缓存?
PHP.ini设置:
[APC]
apc.shm_size = '128M'
apc.enabled=1
apc.shm_segments=1
apc.num_files_hint=0
apc.user_entries_hint=0
apc.ttl=0
apc.user_ttl=7200
apc.gc_ttl=3600
apc.stat=1
apc.enable_cli=0
apc.file_update_protection=2
apc.max_file_size=2M
apc.cache_by_default=1
apc.use_request_time=1
apc.slam_defense=0
apc.stat_ctime=0
apc.canonicalize=1
apc.write_lock=1
apc.report_autofilter=0
apc.rfc1867=0
apc.rfc1867_prefix =upload_
apc.rfc1867_name=APC_UPLOAD_PROGRESS
apc.rfc1867_freq=0
apc.rfc1867_ttl=3600
apc.lazy_classes=0
apc.lazy_functions=0
由于我使用的是 ZF1 + Doctrine2,因此以下是我在 bootstrap.php 文件中使用的配置行。
$config = new DoctrineORMConfiguration();
$cache = new DoctrineCommonCacheApcCache;
$config->setMetadataCacheImpl($cache);
$config->setQueryCacheImpl($cache);
$config->setResultCacheImpl($cache);
关于你的bootstrap.php
,你应该能够为每个项目的缓存定义一个不同的命名空间,比如:
$config = new DoctrineORMConfiguration();
$cache = new DoctrineCommonCacheApcCache;
// define the cache for this project only
$cache->setNamespace('project_name');
$config->setMetadataCacheImpl($cache);
$config->setQueryCacheImpl($cache);
$config->setResultCacheImpl($cache);