|
Транзакция и нетранзакционное действие.
|
|||
---|---|---|---|
#18+
Привет, может не тот форум, но вопрос примерно такой: Как работать с ситуацией когда надо совместить запись в БД и какое-нибудь внешнее действие, типа отправки емайла. Простой сценарий: 1. В таблицу вставляется запись с флагом Sent=0 2. По этой записи каким-то образом генерируется и отправляется емайл. 3. В записи устанавливается флаг Sent=1 Если коммитить после #1, то возможна ситуация когда емайл отправится, а Sent останется равным 0. Если коммитить после #3, то возможна ситуация когда емайл отправится, а записи в таблице не будет вообще. PS: В общем случае имеется ввиду не только отправка emailа, но любое действие типа вызова вебсервиса или записи чего-нибудь в оборудовние. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2018, 11:11 |
|
Транзакция и нетранзакционное действие.
|
|||
---|---|---|---|
#18+
В любом случае не надо делать такие вещи, как отправка email внутри транзакции. GivvЕсли коммитить после #1, то возможна ситуация когда емайл отправится, а Sent останется равным 0.это еще почему? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2018, 11:20 |
|
Транзакция и нетранзакционное действие.
|
|||
---|---|---|---|
#18+
Shocker.Pro, Ну сеть упадет между #2 и #3 или еще что-то. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2018, 11:28 |
|
Транзакция и нетранзакционное действие.
|
|||
---|---|---|---|
#18+
GivvПривет, может не тот форум, но вопрос примерно такой: Как работать с ситуацией когда надо совместить запись в БД и какое-нибудь внешнее действие, типа отправки емайла. Простой сценарий: 1. В таблицу вставляется запись с флагом Sent=0 2. По этой записи каким-то образом генерируется и отправляется емайл. 3. В записи устанавливается флаг Sent=1 Если коммитить после #1, то возможна ситуация когда емайл отправится, а Sent останется равным 0. Если коммитить после #3, то возможна ситуация когда емайл отправится, а записи в таблице не будет вообще. PS: В общем случае имеется ввиду не только отправка emailа, но любое действие типа вызова вебсервиса или записи чего-нибудь в оборудовние. 1,коммит, 2, 3, коммит Но в любом случае придется врукопашную изображать из себя двухступенчатую транзакцию, и возможны коллизии. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2018, 11:58 |
|
Транзакция и нетранзакционное действие.
|
|||
---|---|---|---|
#18+
Givv, Длительные внешние процессы делать асинхронно. Есть распределенные транзакции, но письма к ним не относятся. Просто отправку повесь на JOB субд или IIS. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2018, 12:00 |
|
Транзакция и нетранзакционное действие.
|
|||
---|---|---|---|
#18+
ИМХО для начала стоит определиться с тем, какое поведение требуется. 1. Добавить запись о начале отправки; 2. Отправить письмо; 3. Изменить статус на Отправлено. Если письмо не отправилось то повторить попытку. Если попало в gray list, то повторить попытку. Если... А потом уже выбирать решение. Мне пока не понятно, при чём тут транзакции. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2018, 12:03 |
|
Транзакция и нетранзакционное действие.
|
|||
---|---|---|---|
#18+
GivvНу сеть упадет между #2 и #3 или еще что-то. Сеть между чем и чем? Пусть "отправлятор" ставит в очередь сообщение о том, что отправил, а "разгребатор" этой очереди как сеть будет, то выгребет сообщение из очереди и изменит статус в БД. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2018, 12:08 |
|
Транзакция и нетранзакционное действие.
|
|||
---|---|---|---|
#18+
skyANA, Основной вопрос в том, что делать, если письмо отправилось и выключилось электричество. Есть ли общепринятая практика разруливания таких ситуаций? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2018, 12:10 |
|
Транзакция и нетранзакционное действие.
|
|||
---|---|---|---|
#18+
GivvskyANA, Основной вопрос в том, что делать, если письмо отправилось и выключилось электричество. Есть ли общепринятая практика разруливания таких ситуаций?Развить обсуждение на форуме об этом страниц на 20 ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2018, 12:12 |
|
Транзакция и нетранзакционное действие.
|
|||
---|---|---|---|
#18+
Givv, Вы представляете, что происходит с обычной транзакцией, когда выключается электричество? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2018, 12:13 |
|
Транзакция и нетранзакционное действие.
|
|||
---|---|---|---|
#18+
GivvskyANA, Основной вопрос в том, что делать, если письмо отправилось и выключилось электричество. Есть ли общепринятая практика разруливания таких ситуаций? ИБП. Что делать, если на сервер упадет метеорит, или начнется зомби-апокалипсис - не знаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2018, 12:13 |
|
Транзакция и нетранзакционное действие.
|
|||
---|---|---|---|
#18+
GivvОсновной вопрос в том, что делать, если письмо отправилось и выключилось электричество. Есть ли общепринятая практика разруливания таких ситуаций? Сказали же уже. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2018, 12:15 |
|
Транзакция и нетранзакционное действие.
|
|||
---|---|---|---|
#18+
skyANAGivv, Вы представляете, что происходит с обычной транзакцией, когда выключается электричество? Да не, он просто проигнорировал skyANA1. Добавить запись о начале отправки; 2. Отправить письмо; 3. Изменить статус на Отправлено. вот что с людьми такое, а? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2018, 12:16 |
|
Транзакция и нетранзакционное действие.
|
|||
---|---|---|---|
#18+
skyANAGivv, Вы представляете, что происходит с обычной транзакцией, когда выключается электричество? Видимо изменения откатятся, но тут вопрос в том что #3 может даже не начатся ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2018, 12:17 |
|
Транзакция и нетранзакционное действие.
|
|||
---|---|---|---|
#18+
Givvчто #3 может даже не начатсягде не прошла строчка коммит, откатится. В чем проблема? В письме отката? ))) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2018, 12:20 |
|
Транзакция и нетранзакционное действие.
|
|||
---|---|---|---|
#18+
Petro123Givvчто #3 может даже не начатсягде не прошла строчка коммит, откатится. В чем проблема? В письме отката? ))) Ну в том, что письмо будет отправлено, но в базе флаг Sent=0. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2018, 12:21 |
|
Транзакция и нетранзакционное действие.
|
|||
---|---|---|---|
#18+
Givv, Ты пишешь программу с допуском по вероятности событий. Так что конкретнее вопрос. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2018, 12:24 |
|
Транзакция и нетранзакционное действие.
|
|||
---|---|---|---|
#18+
GivvPetro123пропущено... где не прошла строчка коммит, откатится. В чем проблема? В письме отката? ))) Ну в том, что письмо будет отправлено, но в базе флаг Sent=0. Вкл. Автокоммита в драйвере и коммит будет через миллисекунду. Ок? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2018, 12:25 |
|
Транзакция и нетранзакционное действие.
|
|||
---|---|---|---|
#18+
GivvНу в том, что письмо будет отправлено, но в базе флаг Sent=0.Ну значит после включения электричества отправится второй раз и проставится Sent=1. Это проблема? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2018, 13:08 |
|
Транзакция и нетранзакционное действие.
|
|||
---|---|---|---|
#18+
Shocker.ProGivvНу в том, что письмо будет отправлено, но в базе флаг Sent=0.Ну значит после включения электричества отправится второй раз и проставится Sent=1. Это проблема? Ну да, проблема. Там на самом деле не отправка емайла, а другая "внешняя" операция, которую нельзя вызывать дважды. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2018, 13:41 |
|
Транзакция и нетранзакционное действие.
|
|||
---|---|---|---|
#18+
GivvskyANAGivv, Вы представляете, что происходит с обычной транзакцией, когда выключается электричество? Видимо изменения откатятся, но тут вопрос в том что #3 может даже не начатсяЗа счёт чего они откатятся? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2018, 13:48 |
|
Транзакция и нетранзакционное действие.
|
|||
---|---|---|---|
#18+
GivvShocker.Proпропущено... Ну значит после включения электричества отправится второй раз и проставится Sent=1. Это проблема? Ну да, проблема. Там на самом деле не отправка емайла, а другая "внешняя" операция, которую нельзя вызывать дважды. Всё это решается. Сформулируйте конкретный сценарий. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2018, 13:49 |
|
Транзакция и нетранзакционное действие.
|
|||
---|---|---|---|
#18+
GivvНу в том, что письмо будет отправлено, но в базе флаг Sent=0. если такое случиться, не будет никакой трагедии отправить письмо повторно после включения электричества. кроме того, сервер, который получил письмо в очередь на отправку может сообщить, что письмо уже было отправлено. в механизмах типа fire and forget невозможно обеспечить 100% абсолютно атомарную транзакционность, так как после fire нет обратной связи. элекстричество может отключиться не у вас, а где-то на промежуточных серверах, и вы будете думать, что отправили, но адресат ничего не получит. увы. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2018, 13:50 |
|
Транзакция и нетранзакционное действие.
|
|||
---|---|---|---|
#18+
skyANA]За счёт чего они откатятся? Я подозреваю, что за счет журналирования транзакций. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2018, 13:57 |
|
Транзакция и нетранзакционное действие.
|
|||
---|---|---|---|
#18+
hVosttGivvНу в том, что письмо будет отправлено, но в базе флаг Sent=0. если такое случиться, не будет никакой трагедии отправить письмо повторно после включения электричества. Трагедия это или нет, решает бизнес :) Мы как-то запулили порцию демандов дважды (это такие своеобразные требования об оплате). По другой причине конечно, но уверю вас, это была трагедия. Но в данном конкретном случае речь идет просто об абстрактной внешней операции, которую нельзя делать дважды. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2018, 14:01 |
|
Транзакция и нетранзакционное действие.
|
|||
---|---|---|---|
#18+
Givv, Тестируете все события в ТЗ описанные. Те что не описаны в ТЗ обзываете форс мажор и зовете юриста. Все. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2018, 14:16 |
|
Транзакция и нетранзакционное действие.
|
|||
---|---|---|---|
#18+
GivvТрагедия это или нет, решает бизнес :) Мы как-то запулили порцию демандов дважды (это такие своеобразные требования об оплате). По другой причине конечно, но уверю вас, это была трагедия. Но в данном конкретном случае речь идет просто об абстрактной внешней операции, которую нельзя делать дважды. Обычное решение - абстрактный пользователь, который проставляет галочку "выполнено" и несет полную ответственность. Кого конкретно назначить (козлом отпущения) - решает бизнес :) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2018, 14:19 |
|
Транзакция и нетранзакционное действие.
|
|||
---|---|---|---|
#18+
GivvНо в данном конкретном случае речь идет просто об абстрактной внешней операции, которую нельзя делать дважды.Значит эта операция должна иметь на входе проверяльщик, который не позволит запустить ее дважды. Я делал такое на базе гуидов. Повторный запрос отправляется с тем же гуидом, приемник, если видит повтор, игнорирует его. Но это никак не проблема коммита транзакции на отправителе. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2018, 14:22 |
|
Транзакция и нетранзакционное действие.
|
|||
---|---|---|---|
#18+
LR, Химичат они там)). Уже повторную отправку денег оформили, теперь хотят козлом программу сделать)))) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2018, 14:49 |
|
Транзакция и нетранзакционное действие.
|
|||
---|---|---|---|
#18+
Человек просто хочет пометить несколько действий как "транзакционные" и выполнить эти действия в единой транзакции. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2018, 15:19 |
|
Транзакция и нетранзакционное действие.
|
|||
---|---|---|---|
#18+
Givv, для писем не критично: в большинстве своём в писме указышается конкретный номер "Счёта к оплате" и повторное письмо не есть новый счёт. в теории это решается только через "менеджер транзакций" и распределённые транзакцци с поддерждкой двуступенечатого коммита. В Мире Майкрософта если доставка майла идёт через МС то возможно получится задействовать COM+. Там есть поддержка менеджера транзакций. Но AFAIK его нужно активировать сначала как службу. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2018, 15:23 |
|
Транзакция и нетранзакционное действие.
|
|||
---|---|---|---|
#18+
GivvТрагедия это или нет, решает бизнес :) Если наступление зимы для бизнеса трагедия, надо срочно бежать и спрашивать, а как отменить зиму? GivvМы как-то запулили порцию демандов дважды (это такие своеобразные требования об оплате). По другой причине конечно, но уверю вас, это была трагедия. Есть миллиарды способов накосячить. GivvНо в данном конкретном случае речь идет просто об абстрактной внешней операции, которую нельзя делать дважды. Распределяйте. Два дата-центра в разных странах, на всякий случай. Пусть им поступает команда, и один из них выполняет. Если в стране отключат электричество, будем надеяться, что в другой стране не отключат, хоть кто-то отправит и зафиксирует операцию. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2018, 16:33 |
|
Транзакция и нетранзакционное действие.
|
|||
---|---|---|---|
#18+
GivvskyANA]За счёт чего они откатятся? Я подозреваю, что за счет журналирования транзакций.Правильно подозреваете. Следовательно что надо сделать Вам? Запилить или взять готовый аналог журналирования ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2018, 16:39 |
|
Транзакция и нетранзакционное действие.
|
|||
---|---|---|---|
#18+
GivvhVosttпропущено... если такое случиться, не будет никакой трагедии отправить письмо повторно после включения электричества. Трагедия это или нет, решает бизнес :) Мы как-то запулили порцию демандов дважды (это такие своеобразные требования об оплате). По другой причине конечно, но уверю вас, это была трагедия. Но в данном конкретном случае речь идет просто об абстрактной внешней операции, которую нельзя делать дважды.Таки распишите уже требования Операция считается сделанной при получении ответа от внешней стороны об этом? И нужно учитывать ситуацию, что этот самый ответ по какой-то причине может до вас не дойти? Тогда, как писали выше, необходимо присвоить операции некий уникальный идентификатор, чтобы внешняя сторона по нему могла отклонить повторное выполнение. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2018, 16:47 |
|
Транзакция и нетранзакционное действие.
|
|||
---|---|---|---|
#18+
skyANAТогда, как писали выше, необходимо присвоить операции некий уникальный идентификатор, чтобы внешняя сторона по нему могла отклонить повторное выполнение. ну, если я уже прочитал письмо (не положенное) то никакой идентификатор в моей башке ничего не отменит письмо должно быть доступно для чтения только по коммиту ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2018, 17:16 |
|
Транзакция и нетранзакционное действие.
|
|||
---|---|---|---|
#18+
и воще то вопрос не о конкретном случае не хочешь зиму - будь мобильным, перемещайся с летом или переезжай поближе к экватору ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2018, 17:18 |
|
Транзакция и нетранзакционное действие.
|
|||
---|---|---|---|
#18+
в оглавлении понятие "не транзакционное", это не часто озвучивается (во всяком случае я не видел особых акцентов). надо бы четко определить что это такое? т.е. что может быть транзакционным? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2018, 17:22 |
|
Транзакция и нетранзакционное действие.
|
|||
---|---|---|---|
#18+
GivvПривет, может не тот форум, но вопрос примерно такой: Как работать с ситуацией когда надо совместить запись в БД и какое-нибудь внешнее действие, типа отправки емайла. Простой сценарий: 1. В таблицу вставляется запись с флагом Sent=0 2. По этой записи каким-то образом генерируется и отправляется емайл. 3. В записи устанавливается флаг Sent=1 Если коммитить после #1, то возможна ситуация когда емайл отправится, а Sent останется равным 0. Если коммитить после #3, то возможна ситуация когда емайл отправится, а записи в таблице не будет вообще. PS: В общем случае имеется ввиду не только отправка emailа, но любое действие типа вызова вебсервиса или записи чего-нибудь в оборудовние. В транзакции вставляем запись сразу с Sent=1, потом отправляем e-mail. Если e-mail отправлен, то коммитим транзакцию, если не отправлен, то откатываем. Но, как правильно говорили выше, тут уже от конкретных требований зависит. Потому что, например, если e-mail отправлен, то еще не факт, что он дойдет и будет прочитан. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2018, 20:38 |
|
Транзакция и нетранзакционное действие.
|
|||
---|---|---|---|
#18+
fkthatЕсли e-mail отправлен, то коммитим транзакцию,при асинхронности он в разных транзакциях. If некуда ставить. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2018, 21:29 |
|
Транзакция и нетранзакционное действие.
|
|||
---|---|---|---|
#18+
ViPRosskyANAТогда, как писали выше, необходимо присвоить операции некий уникальный идентификатор, чтобы внешняя сторона по нему могла отклонить повторное выполнение. ну, если я уже прочитал письмо (не положенное) то никакой идентификатор в моей башке ничего не отменит письмо должно быть доступно для чтения только по коммитуВ случае письма необходимо избежать повторной отправки, в ситуации, когда письмо ушло, но в пункте номер 3 нам отрубили свет. Идентификатор поможет нам отследить то, что письмо пришло на ту сторону, а значит решить задачу. Делается это к примеру так: добавляем в тело картинку, src которой ведёт на наш трекинговый сервер. Плюс прошиваем в нём пресловутый идентификатор. И вуаля! ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2018, 10:02 |
|
Транзакция и нетранзакционное действие.
|
|||
---|---|---|---|
#18+
skyANAДелается это к примеру так: добавляем в тело картинку, src которой ведёт на наш трекинговый сервер.Мой бат, к примеру, не грузит картинки, которые физически не приложены к письму, пока я не нажму кнопочку. Аутлук вроде как тоже. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2018, 10:36 |
|
Транзакция и нетранзакционное действие.
|
|||
---|---|---|---|
#18+
skyANA, ты не читатель :) ему НЕ ПОЛОЖЕНО читать письмо, пока транзакция не прошла (низзя чеку сообщить, что у него сняли 1000000баксов, если они не сняты по факту) ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2018, 10:56 |
|
Транзакция и нетранзакционное действие.
|
|||
---|---|---|---|
#18+
Вообще есть такие вещи как MTS, COM+ и Интерфейс ITransaction При должной сноровке можно реализовать запись в БД и отправку мыла в одной транзакции. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2018, 13:02 |
|
Транзакция и нетранзакционное действие.
|
|||
---|---|---|---|
#18+
ЕвгенийВВообще есть такие вещи как MTS, COM+ и Интерфейс ITransaction При должной сноровке можно реализовать запись в БД и отправку мыла в одной транзакции.главное не путать техническую транзакцию, транзакцию субд, бизнес транзакцию и распределенную транзакцию. А написать можно все)). ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2018, 13:10 |
|
Транзакция и нетранзакционное действие.
|
|||
---|---|---|---|
#18+
Shocker.ProskyANAДелается это к примеру так: добавляем в тело картинку, src которой ведёт на наш трекинговый сервер.Мой бат, к примеру, не грузит картинки, которые физически не приложены к письму, пока я не нажму кнопочку. Аутлук вроде как тоже.А огрызок с гуглом грузят. Аутлук - это 6% по статистике, а Ваш бат давно уже и в статистику-то не попадает. Ну и давайте всё-таки уже определимся с требованиями, а не продолжим гадать на тему вырубят электричество, письмо не откроют именно Аутлуком ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2018, 14:36 |
|
Транзакция и нетранзакционное действие.
|
|||
---|---|---|---|
#18+
ViPRosskyANA, ты не читатель :) ему НЕ ПОЛОЖЕНО читать письмо, пока транзакция не прошла (низзя чеку сообщить, что у него сняли 1000000баксов, если они не сняты по факту) Транзакция чего не прошла? У тебя и деньги списываются, и уведомления отправляются в одной транзакции? Где ты такое видел? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2018, 14:38 |
|
Транзакция и нетранзакционное действие.
|
|||
---|---|---|---|
#18+
skyANAShocker.Proпропущено... Мой бат, к примеру, не грузит картинки, которые физически не приложены к письму, пока я не нажму кнопочку. Аутлук вроде как тоже.А огрызок с гуглом грузят. Аутлук - это 6% по статистике, а Ваш бат давно уже и в статистику-то не попадает. Ну и давайте всё-таки уже определимся с требованиями, а не продолжим гадать на тему вырубят электричество, письмо не откроют именно Аутлуком Так и что? Вероятность, что письмо не отправится из-за выключения электричества, гораздо меньше, чем 6%, так что какой смысл в этом src, если у него погрешность больше? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2018, 14:40 |
|
Транзакция и нетранзакционное действие.
|
|||
---|---|---|---|
#18+
Shocker.ProskyANAпропущено... А огрызок с гуглом грузят. Аутлук - это 6% по статистике, а Ваш бат давно уже и в статистику-то не попадает. Ну и давайте всё-таки уже определимся с требованиями, а не продолжим гадать на тему вырубят электричество, письмо не откроют именно Аутлуком Так и что? Вероятность, что письмо не отправится из-за выключения электричества, гораздо меньше, чем 6%, так что какой смысл в этом src, если у него погрешность больше? В том что вероятность того, что произойдёт одновременно и первое и второе, ещё меньше :) ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2018, 14:45 |
|
Транзакция и нетранзакционное действие.
|
|||
---|---|---|---|
#18+
skyANAViPRosskyANA, ты не читатель :) ему НЕ ПОЛОЖЕНО читать письмо, пока транзакция не прошла (низзя чеку сообщить, что у него сняли 1000000баксов, если они не сняты по факту) Транзакция чего не прошла? У тебя и деньги списываются, и уведомления отправляются в одной транзакции? Где ты такое видел? Вроде ТС такое и хотел ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2018, 15:06 |
|
Транзакция и нетранзакционное действие.
|
|||
---|---|---|---|
#18+
skyANAShocker.Proпропущено... Так и что? Вероятность, что письмо не отправится из-за выключения электричества, гораздо меньше, чем 6%, так что какой смысл в этом src, если у него погрешность больше? В том что вероятность того, что произойдёт одновременно и первое и второе, ещё меньше :) все происходит самым нежелательным образом ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2018, 15:07 |
|
Транзакция и нетранзакционное действие.
|
|||
---|---|---|---|
#18+
ViPRosskyANAпропущено... Транзакция чего не прошла? У тебя и деньги списываются, и уведомления отправляются в одной транзакции? Где ты такое видел? Вроде ТС такое и хотелУ него все три шага связаны исключительно с отправкой, то есть с одним действием. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2018, 15:22 |
|
Транзакция и нетранзакционное действие.
|
|||
---|---|---|---|
#18+
fkthatGivvПривет, может не тот форум, но вопрос примерно такой: Как работать с ситуацией когда надо совместить запись в БД и какое-нибудь внешнее действие, типа отправки емайла. Простой сценарий: 1. В таблицу вставляется запись с флагом Sent=0 2. По этой записи каким-то образом генерируется и отправляется емайл. 3. В записи устанавливается флаг Sent=1 Если коммитить после #1, то возможна ситуация когда емайл отправится, а Sent останется равным 0. Если коммитить после #3, то возможна ситуация когда емайл отправится, а записи в таблице не будет вообще. PS: В общем случае имеется ввиду не только отправка emailа, но любое действие типа вызова вебсервиса или записи чего-нибудь в оборудовние. В транзакции вставляем запись сразу с Sent=1, потом отправляем e-mail. Если e-mail отправлен, то коммитим транзакцию, если не отправлен, то откатываем. Но, как правильно говорили выше, тут уже от конкретных требований зависит. Потому что, например, если e-mail отправлен, то еще не факт, что он дойдет и будет прочитан . на то оно и емейл, что никакой гарантии по определению нет ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2018, 16:40 |
|
Транзакция и нетранзакционное действие.
|
|||
---|---|---|---|
#18+
в чем проблема то? письмо писать как запись в таблице (в транзакции). джоб подхватывает свободные записи из таблицы писем и шлет их. Пока транзакция не завершена - запись с ней не попадет в выборку джоба и все. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2018, 18:38 |
|
|
start [/forum/moderation_log.php?user_name=%D1%86%D0%BA%D0%B5%D1%86%D1%83%D0%BA%D0%B5%D1%86%D1%83%D0%BA%D0%B5]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
42ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
68ms |
get tp. blocked users: |
1ms |
others: | 1115ms |
total: | 1283ms |
0 / 0 |