我正在编写一个从数据库(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()
,脚本就会退出,甚至不返回任何输出(应该在最后一行中这样做)。任何想法如何解决?