trans_begin和trans_commit中动作的正确顺序?

时间:2018-07-18 02:52:18

标签: php try-catch codeigniter-3

我正在尝试{...}捕获{...}和codeigniter 3中的事务。在它的内部,有诸如复制映像,插入mysql数据库和设置会话之类的过程。这些动作是否有适当的顺序?或者我可以将它们按任何顺序放置而没有任何后果吗?

try
{
  $this->db->trans_begin();

  if ( ! @copy('/source_dir/filename.jpg', '/destination_dir/filename.jpg'))
  {
    throw new Exception('failed copying file.');
  }

  if ( ! $this->db->insert('table1', $mydata))
  {
    throw new Exception('failed inserting data.');
  }

  $this->db->trans_commit();

  $this->session->set_flashdata('message', 'all process succeeded!');
}
catch (Exception $e)
{
  $this->db->trans_rollback();

  @unlink('/destination_dir/filename.jpg');

  $this->session->set_flashdata('message', $e->getMessage());
}

0 个答案:

没有答案