*/ // filterマッチしなかったものを先にupdate foreach ($cursorlist as $rid => $cursor) { if (!isset($alerted_pulls[$rid])) { RepositoryDb::updateCursor($rid, $cursor); } } // アラートがあるものはrepo毎のトランザクションで一括保存 $con = mfwDBConnection::getPDO('default_master'); $repoids = array_keys($alerted_pulls); foreach ($repoids as $rid) { echo "save: {$repos[$rid]->getName()} ... "; $con->beginTransaction(); try { foreach ($alerts[$rid] as $alert) { $pra = new PullRequestAlert($alert); $pra->save($con); } foreach ($alerted_pulls[$rid] as $p) { $pr = new PullRequest(array('repo_id' => $rid, 'number' => $p['number'], 'user' => $p['user']['login'], 'title' => $p['title'], 'pull_created_at' => $p['created_at'])); $pr->save($con); } RepositoryDb::updateCursor($rid, $cursorlist[$rid], $con); $con->commit(); } catch (Exception $e) { $con->rollback(); throw $e; } echo "done.\n"; } echo "complete.\n";