考虑到这样的代码......
$rs = $dbh->prepare("insert some stuff into the database ?");
$rs->Execute(array($somevalues));
header("Location: http://somewebpage.com");
exit;
有没有办法强制PHP在处理代码的“标题”部分之前等待数据库更新?
我有一个更新数据的页面。我想返回一个“新鲜”页面,以便用户可以刷新它而不需要浏览器提示重新提交数据。问题是,重定向和页面加载太快。它在先前的数据库操作完成之前从数据库加载数据,因此看起来更新未在重新加载的页面上发生。我可以添加手动延迟,但这太粗糙了。我希望php代码只是等到数据库更新后才能执行其他操作。
编辑 - 04Dec11:这似乎是一个简单的浏览器缓存问题。我已将header("Cache-Control: no-cache, must-revalidate");
添加到页面顶部,现在它按预期工作。
答案 0 :(得分:9)
PHP不是异步的,因此所有操作都将被阻止。包括SQL查询。还有其他事情要发生在这里。
答案 1 :(得分:1)
也许只是浏览器缓存;)
答案 2 :(得分:0)
听起来像是一个可能的复制问题,如果您使用的是master-> slave设置?