繁体   English   中英

具有其他非数据库功能的Codeigniter事务?

[英]Codeigniter transactions with other non-db functions?

是否可以有这样的代码?

// send email with email+password and create user (in one transaction)
$this->db->trans_start();
$this->User_model->add_user($user_object);
MY_Controller::send_mail($to, $subject, $mail_data);
$this->db->trans_complete();

它是代码点火器。 我使用活动记录类。 静态函数send_mail如果失败则返回FALSE,如果受影响的行== 0,则add_user返回FALSE ...

我想在事务中使用该非数据库功能(send_mail),如果失败,请回滚。

我知道这里有$this->db->trans_status() ,我可以$this->db->trans_status()运行事务,但是我认为这是一个更好的代码块。 这样甚至可以在事务中具有非数据库功能吗?

不,您只能在send_mail()失败的情况下进行手动回滚:

if ( ! MY_Controller::send_mail($to, $subject, $mail_data))
{
    $this->db->trans_rollback();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM