确保PHP / MySQL代码一次执行?

时间:2012-08-13 21:20:49

标签: php mysql execute

有没有办法确保下面的代码,一次执行(所以如果访问者在键盘上按下escape或关闭浏览器,它不会只执行一半。重要的是它们都是一次性完成或者完全没有。)

mysql_query($queryone);

mysql_query($querytwo);

unlink($file);

unlink($thumb);

mysql_query($querythree);

感谢所有回复,示例代码会很好。

3 个答案:

答案 0 :(得分:1)

如果用户停止了他们的浏览器,那么这些语句都会被执行,但为了确保他们这样做,在这些语句之前添加ignore_user_abort(true);,告诉PHP如果检测到客户端断开连接则不要终止。

请参阅php.ini设置ignore_user_abort。这将允许脚本运行完成,无论客户端是否仍然连接。

进一步阅读:

http://www.php.net/manual/en/features.connection-handling.php

答案 1 :(得分:1)

您可能需要mysql事务。当并非所有查询都成功时,这些函数(提交,回滚等)将撤消对brakedown的查询。 Mysql transactions

答案 2 :(得分:1)

  

因此,如果访问者在键盘上按下escape或关闭浏览器,则不会只执行一半

关闭浏览器或按下escape(或任何键)的访问者对服务器上运行的脚本没有任何影响。无论客户端做什么,您的脚本都将完成运行。

  

重要的是它们都是一次完成或根本没有完成

你一定要看看MySQL Transactions。您可能还想考虑将交易置于stored procedure