Symfony2 模板渲染响应导致 CPU 使用率飙升



我有一份工作,可以循环访问用户并根据他们的偏好发送个性化电子邮件。我正在使用Symfony2中的模板引擎来生成HTML。

基本上像这样的东西在一个循环中运行:

public function getHTML($user) 
{
    $templating = $this->getContainer()->get('templating');
    $html = $templating->renderResponse( 
                'recommendation.html.twig',
                 array(
                   'user' => $user
                 )
             )->getContent();
    return $html;
}

问题是CPU使用率高达100%,处理每个用户需要越来越长的时间。以下是一些数据:

Took 5.4851469993591 seconds 
Took 12.790720939636 seconds 
Took 23.007503032684 seconds 
Took 34.852293014526 seconds 
Took 43.901736021042 seconds 
Took 66.028288125992 seconds 

每行表示处理 100 个用户所花费的时间。因此,前 100 个用户需要 5 秒,接下来的 12 秒,依此类推。

关于我可以做些什么来提高性能的任何建议?

获取托管实体时,可能会积累大量托管实体的身份映射。

在电子邮件发送的每次迭代中,查看是否清除或分离实体管理器

最好将其与迭代结果结合使用,文档中有一个很好的例子。

它可以对执行大量迭代的作业的速度和内存消耗产生巨大影响。

对于没有一些工作的长期运行的脚本,原则通常不是很好。

最新更新