我有2个PHP应用程序插入/更新导致死锁的同一张表。第一个应用程序将每2分钟出现一次,并扫描要插入/更新的新文件,并执行OCR流程,该流程后来又更新了另一个表,我认为这会导致死锁,因为该过程可能花费最长的时间。第二个应用程序是将归档数据移到同一表中,该表具有超过几百万条记录,8个以上的计数。我已经读过一个选项,可以编写3次重试循环。但是,我认为它没有用。这是下面的代码。我也愿意接受其他建议。
$retry=0;
$notdone=TRUE;
while ($notdone && $retry<3){
try{
$stmt = $pdo->prepare($qry);
$stmt->execute($dataArray);
$notdone=FALSE;
}catch(Exception $e){
$retry++;
$log->trace("Retry count at $retry, delay 5 seconds before executing");
sleep(5);
}
}
if($retry == 3) {
$retVal['error'] = "Statement 1 Error: could not connect to database: ".$e->getMessage();
$log->trace($retVal['error']);
}
答案 0 :(得分:0)
发现问题是由于使用了错误的异常,一旦我使用了PDOexception,我就启动了正确的重试。