我在一个简单的PHP脚本中有一个echo调用,用于在屏幕上打印参数:
<body>
<p>the string will appear in 30 seconds:</p>
<p><?php echo $string; ?></p>
</body>
我希望在“echo”运行之前,系统将等待X秒。因此,文本“字符串将在30秒后出现”将首先出现,30秒后,$ string将出现在它下面。怎么做? Sleep()往往会在加载前延迟整个页面。
答案 0 :(得分:4)
您可以使用PHP睡眠等待30秒:
<body>
<p>the string will appear in 30 seconds:</p>
<p><?php sleep(30); echo $string; ?></p>
</body>
但是,执行此操作时,根据您的PHP和Apache设置,整个页面可能需要等待30秒才能完全呈现并将HTTP响应发送回客户端。
此外,如果您向客户端发送部分响应,有时可能会等待呈现内容,直到加载足够的页面来呈现数据(例如,在表格的情况下)。
尝试使用JS,允许页面渲染,然后在30秒后显示隐藏数据:
<body>
<p>the string will appear in 30 seconds:</p>
<p id="sleep" style="display:none"><?php echo $string; ?></p>
<script>
window.setTimeout(function() {
document.getElementById('sleep').style.display = '';
}, 30000);
</script>
</body>
答案 1 :(得分:0)
您可以尝试使用Javascript解决此问题。 jQuery库非常干净且有用。你应该试一试:
<强> HTML 强>
<body>
<p>the string will appear in 30 seconds:</p>
<p id="string" hidden="hidden"><?php echo $string; ?></p>
</body>
<强> JS 强>
$( document ).ready(function() {
$("#string").delay(30000).show();
});
重要提示:由于Javascript是一种客户端语言,这个解决方案只是“延迟”客户端设备中的$ string回显,但是自从开始以来接收变量$ string从服务器...如果有一些“不耐烦和黑客倾向”的客户端,只需查看您的页面的源代码就可以了... :(
SERVER-SIDE ALTERNATIVE :如果所提出的解决方法对您的应用程序无效(因为我不知道其安全要求),我会尝试,例如使用备用服务器端方法检查。以下是基本步骤:
在服务器上保存初始请求的时间戳以及客户端信息(例如在会话cookie中)。
然后,不要直接从服务器发送$ string,只需将其保留为空。
使用JS,在再次向服务器(例如通过AJAX)询问$ string之前延迟30秒。然后,这个AJAX调用将在初始请求后30秒触发,服务器现在可以检查会话cookie(包含有关客户端和时间戳的信息)。
if(current_timestamp() - cookie_timestamp()&gt; = 30)==&gt;在其他情况下,服务器返回$ string或什么也没有。
答案 2 :(得分:0)
这对我有用 如果您想为我在 内容 上添加更多时间更改,我在转到 read.php 页面之前添加了 2 秒
echo "<meta http-equiv='refresh' content='2;URL=read.php'/>";