即使在插入数据的PHP脚本停止后,数据也会插入到数据库中

时间:2012-01-27 07:13:16

标签: php postgresql

这是我经常遇到的事情。我正在运行PHP脚本以将数据插入PostGreSql数据库。现在有时候,如果我在中间停止执行这个脚本,那么数据仍会不断添加到数据库中。

为什么会发生这种情况?如何规避这个问题?

2 个答案:

答案 0 :(得分:1)

请注意,只是在浏览器中按“停止”并不会实际停止PHP脚本(无论如何不在大多数服务器上),它只会断开浏览器与其他输出的连接。该脚本将继续在服务器上运行,直到它完成或超时。

重新启动服务器将关闭在那里运行的任何脚本,但这就像试图用大炮杀死一只苍蝇。

在最简单的情况下,您可能希望偶尔检查!connection_aborted()。见http://php.net/manual/en/features.connection-handling.php

答案 1 :(得分:0)

我认为你的剧本以某种方式失败了?如果是这样,您应该使用交易。您在PHP脚本的最开始处启动事务并在最后提交它。如果脚本失败,则永远不会提交事务,因此将回滚。这样,如果您的脚本失败,您的数据将不会添加到数据库中。

它或多或少会沿着这些方向发挥作用:

<?php
pg_query("BEGIN;");

// all of your PHP and pg code

// end of file    
pg_query("COMMIT;"); 
?>

您也可以手动调用pg_query(“ROLLBACK;”);取消您的交易和回滚。

此外,你的脚本sholud永远不会失败:)