- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
更新:见帖子底部(这最初是在我们使用 SF 2.3 时发布的,我们现在使用的是 2.7.0)
我们的服务器上运行了多个 Symfony 应用程序,但由于所有 ORM 缓存条目都以“sf2”为前缀,我们似乎在整个站点上都遇到了缓存污染。
在过去的 30 分钟里四处寻找,似乎没有一个简单的解决方案。
第一个建议使用 ProjectConfiguration.class.php - 但这似乎是 Symfony 1 的事情。
下一个可能的解决方案是使用 ApcUniversalClassLoader 类(根据 SO 上的这个问题:Multiple Symfony2 Sites using APC Cache)。
问题是我们的设置使用 composer 来自动加载,所以我们不能简单地按照那个例子使用代码。
APC的类缓存端没问题,可以在前端 Controller 设置key,但是它没有为doctrine cache设置key。
有没有人有任何想法,因为目前我们不得不在除第一个应用程序之外的所有应用程序上禁用 APC。
前 Controller :
<?php
use Symfony\Component\ClassLoader\ApcClassLoader;
use Symfony\Component\HttpFoundation\Request;
require_once __DIR__.'/../app/bootstrap.php.cache';
// Use APC for autoloading to improve performance.
// Change 'sf2' to a unique prefix in order to prevent cache key conflicts
// with other applications also using APC.
$loader = new ApcClassLoader('app_1', $loader);
$loader->register(true);
require_once __DIR__.'/../app/AppKernel.php';
$kernel = new AppKernel('prod', false);
$kernel->loadClassCache();
// wrap the default AppKernel with the AppCache one
require_once __DIR__.'/../app/AppCache.php';
$kernel = new AppCache($kernel);
Request::enableHttpMethodParameterOverride();
$request = Request::createFromGlobals();
$response = $kernel->handle($request);
$response->send();
$kernel->terminate($request, $response);
-- 澄清--只是为了澄清,上面的代码引用了类的 APC 缓存,这与上面的一样工作并且很好。我们似乎无法更改的是 Doctrine ORM APC 条目的默认命名空间,这些似乎是固定的,因此与每个正在运行的实例发生冲突。
-- 更新--
在尝试了 Zerrvox 的设置命名空间的建议后,似乎没有用,主要缓存仍在使用默认命名空间。如果它们是在清除缓存时随机生成的,那就不会那么糟糕了,但是我的 vagrant box 和 live box 上的默认命名空间是相同的,并且缓存是在单独的 box 上生成的,所以它显然不是随机的。
缓存中的 appProdProjectContainer 类中的这些方法仍然引用默认命名空间。
protected function getDoctrineCache_Providers_Doctrine_Orm_DefaultMetadataCacheService()
{
....
$instance->setNamespace('sf2orm_default_9e755ef08ba52b507455ecd06d0a648985c9593b15aca1522b4725acaaf77ce6');
return $instance;
}
// Same for...
protected function getDoctrineCache_Providers_Doctrine_Orm_DefaultQueryCacheService
protected function getDoctrineCache_Providers_Doctrine_Orm_DefaultResultCacheService
最佳答案
您没有具体说明您是在谈论 Doctrine ORM 缓存还是使用 Doctrine Annotations 的注释缓存。
无论如何你可以创建你自己的 APC 缓存服务,它可以通过在 Symfony 中像这样定义一个服务来用于两者(yml)
app.doctrine.apc_cache:
class: Doctrine\Common\Cache\ApcCache
calls:
- [setNamespace, ["app_namespace"]]
-- 更新--
您是否将定义的服务指定为 doctrine 的元数据缓存。请参阅 Doctrine bundle 配置的配置引用 http://symfony.com/doc/current/reference/configuration/doctrine.html#caching-drivers
doctrine:
orm:
metadata_cache_driver:
type: service
id: app.doctrine.apc_cache
关于php - Symfony2 - 如何为多个应用程序设置 Doctrine APC 缓存前缀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28275201/
我是 php 新手,使用的是 APC 框架。我正在尝试为使用 APC 的类编写一些单元测试,但在尝试删除然后在 APC 中再次设置一些键值时遇到了一些问题。我的问题可以归结为一小部分代码没有按我预期的
我发现 APC 上存在大量碎片 (>80%),但实际上性能似乎相当不错。我有 read another post这建议在 wordpress/w3tc 中禁用对象缓存,但我想知道减少碎片是否比首先缓存
我发现 APC 上存在大量碎片 (>80%),但实际上性能似乎相当不错。我有 read another post这建议在 wordpress/w3tc 中禁用对象缓存,但我想知道减少碎片是否比首先缓存
我刚刚安装了 APC 以在我的 Ubuntu VPS 服务器上缓存我的 PHP 代码。使用 sudo apt-get install php-apc sudo /etc/init.d/apache2
我正在尝试在 APC 中使用 apc.filter 等功能。但是我所做的一切都不起作用 我应该完成 2 项任务。 1)需要包含1个目录用于缓存。我的代码在apc.ini apc.cache by de
这两个例子之间有什么区别吗: 1 个共享内存段 @ 256MB 4 个共享内存段 @ 64MB 多个分段是否使 APC 更容易清理陈旧的条目? 最佳答案 默认情况下,一些系统(包括大多数 BSD 变体
只是好奇。手册中未记录 here . 也许熟悉APC源代码的人可以解释一下? 最佳答案 它指定一个目录,APC 在启动时从该目录加载缓存数据。在大型设置(想想 100 多台服务器)中,这将允许您放弃编
当您尝试将变量添加到 APC 而 APC 缓存已满时会发生什么?它会自动从缓存中删除最少使用的变量吗? 最佳答案 根据 APC: Runtime Configuration , "在缓存用完可用内存的
互联网上有很多讨论认为在 CLI 中调用 apc_cache_clear() 不会从“web”PHP 进程中清除操作码缓存,无论它们是在 Apache 中运行还是由 FPM 运行(参见 How to
由于我使用 PECL 安装了 APC for PHP,因此有时会出现以下错误:Cannot redeclare class xxx xxx 不时更改。我可以禁用 APC,但 APC 可以极大地提高性能
我正在使用 PHP 的 APC 来存储大量信息(使用 apc_fetch() 等)。这些信息有时需要分析并转储到别处。 据说,我每秒获得数百次点击。这些命中增加了各种计数器(使用 apc_inc()
我最近在我的生产服务器上安装了 APC,但它没有按预期工作。 我所有的项目都是用 SVN 处理的,在生产版本中,我有一个提交后 Hook ,可以将 svn 导出到正确的目录。 问题是使用 APC,除非
关于 APC 操作码缓存,什么是“命中与未命中”?我已经安装了 APC 并且它运行良好,但我有“一些”失误,我想知道这是否“不好”。此外,我正在运行 Openx,因此,我很快就会填满“缓存完整计数”。
在共享 GoDaddy 主机中,未安装 PHP APC。如果 APC 未安装在服务器中,是否有替代方案。那里是否有任何手动过程,例如编译 php 等。请建议 APC 的任何替代方案以提高性能。 仅供引
这是我的 PHP.ini 中的内容: extension=php_apc.dll ... [APC] apc.enabled = 1 我在 Windows Server 2003 上运行 Apa
我已经在Nginx,PHP-FPM,Varnish和APC设置上运行了Magento。 APC的碎片和吹扫率都很高。 碎裂在2小时内增加> 50%,然后缓慢上升到100%。 更令人不安的事实是,穆宁(
我的 VPS 开始出现问题,无法为所有网站上的页面提供服务。它只是显示一个空白页面,或者提供下载 php 文件(幸运的是代码不在下载文件中 :))。服务器仍在运行,但这似乎是 PHP 的问题,因为我可
我想使用 apc_store() 来缓存一些结果。 但我需要知道数据将存储在哪里,限制是多少。 它总是存储在内存中吗?或者也写入磁盘?我更希望将不经常访问的数据存储在磁盘上。我应该为此使用不同的缓存系
我最近将我的 Web 服务器切换到了 Centos 6.3,以及 apache 2.2.15、PHP 5.4.11 和 APC 3.1.14。 我开始不时收到客户的投诉,说某个页面无法正常工作,或者出
每次运行这段代码时,我都会看到 5 个输出: "; echo $after; $later = apc_fetch('vwxyz'); //OK this should definitely be f
我是一名优秀的程序员,十分优秀!