如果我使用一个大型函数来更新MySQL上的数据,然后执行header("Location: somepage")
, PHP是否会在所有这些更新查询完成之前等待,然后重定向,或者我必须对此负责?
是的,PHP将按顺序执行每个命令,并且只有在更新查询报告成功后才会到达重定向语句。
PHP代码以可预测的顺序模式执行,自顶向下。
如果你运行一些数据库查询,数据库服务器将处理它们,PHP线程不处理自己的写入(只是传递查询)。
MyISAM表在写时被锁定,而且我很确定UPDATE
查询是原子的(这意味着它们要么都发生,要么不发生——它们不会把事情做一半)。
还有一点,在发送Location
报头后,不要忘记发送exit
。用户代理可以自由地忽略Location
头。
来自php文档
对于其他类型的SQL语句,如INSERT, UPDATE, DELETE, DROP等mysql_query()成功时返回TRUE,错误时返回FALSE。
然后……如果返回成功或失败,则必须等待更新完成。