如何在共享托管的情况下为不同的URL分隔APC缓存?

时间:2015-04-22 11:01:44

标签: php caching zend-framework doctrine-orm apc

我在共享主机上使用带有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 \Doctrine\ORM\Configuration();

$cache = new \Doctrine\Common\Cache\ApcCache;

$config->setMetadataCacheImpl($cache);
$config->setQueryCacheImpl($cache);
$config->setResultCacheImpl($cache);

1 个答案:

答案 0 :(得分:0)

关于您的bootstrap.php,您应该能够为每个项目的缓存定义不同的命名空间,例如:

$config = new \Doctrine\ORM\Configuration();

$cache = new \Doctrine\Common\Cache\ApcCache;

// define the cache for this project only
$cache->setNamespace('project_name');

$config->setMetadataCacheImpl($cache);
$config->setQueryCacheImpl($cache);
$config->setResultCacheImpl($cache);