创建用户和发送邮件怎么保证原子性?
注册的时候,教程中是先创建用户,然后发送邮件。
这里就会有四种情况:
1.创建成功->发送失败
2.创建成功->发送成功
3.创建失败->发送成功
4.创建失败->发送失败
其中2,4不用考虑。1中就会造成该用户永远无法激活,3这种情况不可能发生,发送邮件是依赖于$user。
针对1这种情况优化:
1.先根据email和activated查询是否存在
2.存在就直接发送邮件
3.不存在就创建然后发送邮件
这样就可以保证邮件发送失败的情况下还可以继续激活
推荐文章: