【发布时间】:2013-09-30 13:45:43
【问题描述】:
在我的服务器上,我有多个虚拟主机,我在它们上运行多个基于 ZF 1.12 的应用程序。缓存数据时(使用 Zend_Cache_Backend_File),每个项目都将文件保存在 /tmp 中。
问题是存在一些名称和访问权限问题。运行 project2 我得到这个错误:
警告:fopen(/tmp/zend_cache---internal-metadatas---Zend_LocaleC_de_DE_currencynumber_)
那是因为该文件是由在单独的虚拟主机上运行的 project1 创建的。
所以我想为每个项目的缓存数据定义单独的文件夹,如下所示:
/tmp/porject1
/tmp/project2
IMO 最好的方法是使用 application.ini 来做到这一点 - 所以我尝试了这个:
resources.cachemanager.database.backend.name = File
resources.cachemanager.database.backend.customBackendNaming = false
resources.cachemanager.database.backend.options.cache_dir = "/tmp/project1"
但它不起作用 - 数据仍然保存在 /tmp 中 - 我做错了什么?
【问题讨论】:
-
您尝试在更改之前清理缓存? $yourCacheManangerObject->clean(Zend_Cache::CLEANING_MODE_ALL);
-
我会回答问题:) resources.cachemanager.database.backend.name 中的数据库是缓存管理器对象吗?如果是这样,我不知道如何访问它。即使我不使用自己的 zend_cache 对象(/zend_cache---internal-metadatas---Zend_LocaleC_de_DE_currencynumber_ 是 ZF 自己制作的),也会出现我描述的问题。
-
不,backend.name 是“后端缓存”的类型。 CacheMananger 对象设置在 Zend_Registry 上。使用 Zend_Registry::get('Zend_Cache_Manager') 来访问它。
-
在 initRequest() 的引导程序中执行此操作我什么也没得到(尚未设置)。也许我问的问题不够具体:我希望能够设置与我的应用程序直接无关的 ZF 缓存数据的路径(不是由我的应用程序设置,而是 ZF 本身设置,例如:zend_cache---internal -metadatas---Zend_LocaleC_de_DE_currencynumber 或 zend_cache---internal-metadatas---Zend_LocaleC_de_DE_currencysymbol_EUR)
-
嗯,试试这个
$_SERVER['TEMP'] = realpath('/tmp/project1');,看看this问题
标签: php zend-framework caching