小编Mon*_*roM的帖子

内存泄漏Symfony2 Doctrine2 /超出内存限制

实际上我对symfony2和doctrine2的组合有很多麻烦.我必须处理大量数据集(大约2-3百万次写入和读取),并且必须做很多额外的工作以避免内存不足.

我找出了2个要点,即"泄漏"内存(它们实际上并没有泄漏,而是分配了很多)

  1. Entitymanager实体存储(我不知道这个的真实名称)似乎它保留了所有处理过的entites,你必须定期清除这个存储

    $entityManager->clear()
  2. Doctrine QueryCache - 它缓存所有使用的查询,我发现的唯一配置是你能够决定你想要使用什么类型的Cache.我没有发现全局禁用每个查询禁用它的有用标志.因此通常使用该函数为每个查询对象禁用它

    $qb = $repository->createQueryBuilder($a);
    $query = $qb->getQuery();
    $query->useQueryCache(false);
    $query->execute();
    

所以..这就是我现在想出来的..我的问题是:

是否有一种简单的方法可以从Entitymanagerstorage中拒绝某些对象?有没有办法在entitymanager中设置querycache?我可以在symonfony doctrine配置中配置这种缓存行为吗?

如果有人对我有一些不错的提示,那将是非常酷的..否则这可能会帮助一些菜鸟......

CYA

orm memory-leaks symfony doctrine-orm

45
推荐指数
4
解决办法
2万
查看次数

Doctrine - Managed Entity - 默认情况下不管理获取的实体

我将 Doctrine 用于 Typ3/cms 项目以增强后端工作流程的功能。

所以我不得不自己引导教义。它的大部分内容都非常简单,我完全没有问题。但是当谈到坚持一个现有的实体时,我很挣扎。每次我坚持一个现有实体时,它都会被创建为一个新实体。

经过一番挖掘,我得出结论,这不是“UnitOfWork”的一部分(->contains(entity) == false)。如果我在这个单元内手动注册,一切又正常了。

$this->entityManager->getUnitOfWork()->registerManaged($page, array('uid' => $page->getUid()), array('title' => $page->getTitle()));
Run Code Online (Sandbox Code Playgroud)

但这不可能是故事的结局..所以我仍然试图弄清楚我的学说有什么问题:D

为什么我提取的实体不受管理?

这是我的 DoctrineLoader:

private function createEntityManager()
{
    global $GLOBALS;

    $paths = array(
        MyT3Extension::rootDir() . '/Configuration/ORM'
    );
    $isDevMode = true;
    $typoDbConfig = $GLOBALS['TYPO3_CONF_VARS']['DB'];

    // the connection configuration
    $dbParams = array(
        'driver'   => 'pdo_mysql',
        'user'     => $typoDbConfig['username'],
        'password' => $typoDbConfig['password'],
        'dbname'   => $typoDbConfig['database'],
        'charset'  => 'utf8'
    );

    $config = Setup::createYAMLMetadataConfiguration($paths, $isDevMode, MyT3Extension::rootDir() . '/Cache');
    $entityManager = EntityManager::create($dbParams, $config);


    return $entityManager;
}
Run Code Online (Sandbox Code Playgroud)

orm 模型的 Yml 定义: …

php typo3 unit-of-work symfony doctrine-orm

5
推荐指数
1
解决办法
1941
查看次数

标签 统计

doctrine-orm ×2

symfony ×2

memory-leaks ×1

orm ×1

php ×1

typo3 ×1

unit-of-work ×1