PHP中的自动运行(在PHP中开始和提交)

时间:2014-03-21 10:59:46

标签: php transactions commit

可能听起来很傻,但我想知道有没有办法将PHP代码包含在某些函数中,这样如果发生任何错误,它会回滚它已经完成的所有进程。 (就像我们在mysql-Automocity中所做的那样)例如:

$this->BEGIN;
$this->function1();
$this->function2();
$this->COMMIT;

1 个答案:

答案 0 :(得分:0)

数据库服务器可以简单地将所有更改回滚到数据库表,但由于PHP功能更强大,因此无法轻松完成。

你可以这样做:

try
{
    // Do something / create file
    file_put_contents("/tmp/test.txt", "Test");

    // ... some more actions here ...

    // some error occurs, rollback!
    if($some_error)
    {
        throw new Exception();
    }
}
catch(Exception $e)
{
    // undo all changes
    @unlink("/tmp/test.txt");
}

另请注意,有一些事情是无法撤消的。例如,http调用某些web服务。