Сервер с сайтом в одной стране, почтовик в другой, из-за этого около 2% писем иногда не отправлялись (сайт не мог в редких случаях с почтовиком связаться). В таблице b_event события были со статусом F. Задача: Пометить те события, по которым не отправлены письма, как новые, чтобы попытаться их еще раз отправить. |
function UpdateEventsWithStatusF(){ global $DB; $strSql = "SELECT ID FROM b_event WHERE SUCCESS_EXEC='F' and DATE_INSERT>'".date("Y-m-d H:i:s", time() - (60*60*27))."'"; //sql запрос $res = $DB->Query($strSql); //выполняет запрос SELECT,INSERT,DELETE,UPDATE $DB->StartTransaction(); $arFields = [ "SUCCESS_EXEC"=>"'N'", "DATE_EXEC" => "''" ]; while ($row = $res->Fetch()){ $DB->Update("b_event", $arFields, "WHERE ID='".$row["ID"]."'",$err_mess.__LINE__); } if (strlen($strError)<=0){ $DB->Commit(); //сохранить последние изменения в базе и закрыть транзакцию } else{ $DB->Rollback(); //откатить изменения и закрыть транзакцию } return "UpdateEventsWithStatusF();"; } |