有没有办法确保下面的代码,一次执行(所以如果访问者在键盘上按下escape或关闭浏览器,它不会只执行一半。重要的是它们都是一次性完成或者完全没有。)
mysql_query($queryone);
mysql_query($querytwo);
unlink($file);
unlink($thumb);
mysql_query($querythree);
感谢所有回复,示例代码会很好。
答案 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。