是否可以在执行前使用sleep()(或其他一些函数)等待?
我有例如:
<div>bla bla</div>
<?php
$a
echo $a; ?>
some divs and html
<?php
$b
echo $b; ?>
如何在页面加载后5秒执行第一个php脚本,但在页面加载时显示其他所有内容?如果我在第一个php之前使用sleep(),它将延迟整个页面加载。
答案 0 :(得分:3)
是的,您可以使用$name= $_POST['name'];
$mobile= $_POST['mobile'];
$custname1= $_POST['cust_name'];
echo $custname1;
$sql = "INSERT INTO test1 (name,email,mobile) VALUES ('$cust_name','$email[$i]', '$mobile[$i]')";
来延迟执行,但由于输出通常是缓冲的,并且在脚本完成之前不会发送到浏览器,因此结果不是&#39; t重新开始。
如果在调用sleep()
后立即执行flush()
和ob_flush()
,则会刷新输出缓冲区并将其发送到浏览器。
答案 1 :(得分:2)
你想为此使用AJAX。使用jQuery的示例:
<div id="content">
<-- You want to load something here after 5 seconds -->
</div>
<script type="text/javascript">
setTimeout(function() {
$('#content').load("/url/to/your/script.php");
}, 5000); // 5000 is the time to wait (ms) -> 5 seconds
</script>
这会将echo
的输出(script.php
)加载到ID为“content”的div中。通过这种方式,您可以让客户端按照@GhostGambler
这不会阻止输出初始脚本发送的其他内容。
答案 2 :(得分:0)
HTTP协议包含一个特殊标头Transfer-Encoding
,允许您指定页面可以按块(Transfer-Encoding: chunked
)加载,尽管没有保证浏览器会这样做(但大多数浏览器都会这样做)。
Transfer-Encoding: chunked
标头向浏览器发出信息,提示网络服务器事先不知道Content-Length
。
虽然通常您希望在该页面完全加载后使用Ajax加载内容,但您可以使用此技术来显示,例如,实时终端输出,而无需JavaScript。
请参阅this question,了解如何在PHP中实现分块响应。