| Сервер с сайтом в одной стране, почтовик в другой, из-за этого около 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();";
} |