如何在 PHP 中延迟 2 秒来包含?
How to delay 2 seconds in PHP to include?
我希望此 PHP 脚本在包含 sp.php(服务器面板)之前等待 2 秒。
sleep(2);
对我不起作用(它根本不做任何事情。)
我的代码:
<?php
$cookie_name = "sc";
?>
<?php
if(!isset($_COOKIE[$cookie_name])) {
include 'noserver.php';
} else {
echo "Server found";
sleep(2);
include 'sp.php';
}
?>
有什么想法吗?它用于托管网站的服务器。
您可以使用 Javascript 与 setTimeout
和 window.location.href
重定向到文件。
示例:
<?php
if (!isset($_COOKIE[$cookie_name])) {
include 'noserver.php';
} else {
echo 'Server found';
echo '<script>setTimeout(function(){window.location.href =
"http://yourwebsite.com/sp.php"}, 2 * 1000);</script>';
}
?>
您可能认为它什么也没做,因为在包含完成之前您看不到输出。尝试输入 flush
命令并在写入“找到服务器”后刷新所有缓冲:
print "Server found\n";
// in the very worst case you might be forced to send "<!-- GARBAGE -->"
// with enough "garbage" to force any intermediate buffers to flush.
if (ob_get_level()) {
ob_flush();
}
flush();
...
但是,正如所建议的那样,这可能是一个 XY 问题。您希望 else 发生某些事情,服务器端延迟 2 秒可能不是实现此目的的最佳方法。
例如,如果您希望立即出现快速的“找到服务器”消息,然后加载较慢的页面(即使是同一页面),您可以使用会话标志或使用 jQuery 和 DOM 加载来做到这一点。
在第一种情况下,您加载同一页面两次,第一次显示消息、设置标志并使用位置或元重新加载 (echo "<meta http-equiv="refresh" content="2" />
))。第二次,在设置标志的情况下,您取消设置标志和 运行 include()
。问题已解决,没有服务器 sleep()
开销。
我希望此 PHP 脚本在包含 sp.php(服务器面板)之前等待 2 秒。
sleep(2);
对我不起作用(它根本不做任何事情。)
我的代码:
<?php
$cookie_name = "sc";
?>
<?php
if(!isset($_COOKIE[$cookie_name])) {
include 'noserver.php';
} else {
echo "Server found";
sleep(2);
include 'sp.php';
}
?>
有什么想法吗?它用于托管网站的服务器。
您可以使用 Javascript 与 setTimeout
和 window.location.href
重定向到文件。
示例:
<?php
if (!isset($_COOKIE[$cookie_name])) {
include 'noserver.php';
} else {
echo 'Server found';
echo '<script>setTimeout(function(){window.location.href =
"http://yourwebsite.com/sp.php"}, 2 * 1000);</script>';
}
?>
您可能认为它什么也没做,因为在包含完成之前您看不到输出。尝试输入 flush
命令并在写入“找到服务器”后刷新所有缓冲:
print "Server found\n";
// in the very worst case you might be forced to send "<!-- GARBAGE -->"
// with enough "garbage" to force any intermediate buffers to flush.
if (ob_get_level()) {
ob_flush();
}
flush();
...
但是,正如所建议的那样,这可能是一个 XY 问题。您希望 else 发生某些事情,服务器端延迟 2 秒可能不是实现此目的的最佳方法。
例如,如果您希望立即出现快速的“找到服务器”消息,然后加载较慢的页面(即使是同一页面),您可以使用会话标志或使用 jQuery 和 DOM 加载来做到这一点。
在第一种情况下,您加载同一页面两次,第一次显示消息、设置标志并使用位置或元重新加载 (echo "<meta http-equiv="refresh" content="2" />
))。第二次,在设置标志的情况下,您取消设置标志和 运行 include()
。问题已解决,没有服务器 sleep()
开销。