PHP:sleep()用于特定的代码行

时间:2016-10-13 10:33:53

标签: php sleep

是否可以在执行前使用sleep()(或其他一些函数)等待?

我有例如:

<div>bla bla</div>
<?php
$a
echo $a; ?>

some divs and html
<?php
$b
echo $b; ?>

如何在页面加载后5秒执行第一个php脚本,但在页面加载时显示其他所有内容?如果我在第一个php之前使用sleep(),它将延迟整个页面加载。

3 个答案:

答案 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(),则会刷新输出缓冲区并将其发送到浏览器。

请参阅http://php.net/manual/en/function.ob-flush.php

答案 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中实现分块响应。