doctrine2 flush()无缘无故地崩溃

时间:2016-02-23 08:01:30

标签: php mongodb doctrine-orm database

我正在编写一个从数据库(mongo db)获取文档的转换器,对其字段执行一些魔术并将其写回。重复所有相关文档。

问题是,在成功处理EntityManager#flush()之后,只是静默崩溃,不对db进行任何更改或返回错误代码。 我之前遇到过这次崩溃,但我已经能够通过减少flush()的实体数量来逃避它。现在,即使只有一个也不行。

代码如下:

public function convertTagsAction() {

$result = [];
$result['docs processed'] = 0;
$result['tags added'] = 0;
$repo = $this->getRepo('Portal');
$cnt = 0;
$dm = $this->getDM();

$docs = $repo->findBy([...]);

$result['docs to process'] = count($docs);

foreach($docs as $doc) {

....//executing just for ONE doc at the moment

  $result['docs processed']++;

  //file_put_contents('1.txt', print_r($doc, true));
  //Everything is ok in the file

  $dm->persist($doc);
  echo $dm->getUnitOfWork()->size();
  // returns 6087 which I deem strange

  //this helped me before to manage this problem
  $cnt++;
  if ($cnt >= 20) {
    $dm->flush();
    $cnt = 0;
  }
}
try {
  $dm->flush();
} catch (Exception $e) {
  echo $e->getMessage(); //Nah, won't tell me anything
}
return $this->success($result);
}

所以现在,只要调用flush(),脚本就会退出,甚至不返回任何输出(应该在最后一行中这样做)。任何想法如何解决?

0 个答案:

没有答案