Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在PHP中延迟2秒以包含?_Php_Sleep - Fatal编程技术网

如何在PHP中延迟2秒以包含?

如何在PHP中延迟2秒以包含?,php,sleep,Php,Sleep,我希望这个PHP脚本在包含sp.PHP(服务器面板)之前等待2秒。 睡眠(2)对我不起作用(它根本不起任何作用。) 我的代码: <?php $cookie_name = "sc"; ?> <?php if(!isset($_COOKIE[$cookie_name])) { include 'noserver.php'; } else { echo "Server found"; sleep(2); incl

我希望这个PHP脚本在包含sp.PHP(服务器面板)之前等待2秒。
睡眠(2)对我不起作用(它根本不起任何作用。)

我的代码:

<?php
$cookie_name = "sc";
?>
<?php
if(!isset($_COOKIE[$cookie_name])) {
    include 'noserver.php';
} else {
    echo "Server found";
    sleep(2);
    include 'sp.php';
}
?>


有什么想法吗?它用于承载web的服务器。

您可以使用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>';
}
?>

您可以将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
命令并刷新任何缓冲区:

打印“找到服务器\n”;
//在最坏的情况下,您可能会被迫发送“”
//有足够的“垃圾”来强制任何中间缓冲区刷新。
if(ob_get_level()){
ob_flush();
}
冲洗();
...
然而,正如所建议的,这可能是一个XY问题。您希望发生其他事情,而服务器端延迟2秒可能不是实现这一点的最佳方式

例如,如果您希望立即显示一条快速的“Server found”消息,然后加载一个较慢的页面(,即使它是同一个页面),您可以使用会话标志或使用jQuery和DOM加载来实现这一点


在第一种情况下,您加载同一页面两次,第一次显示消息,设置标志并使用位置或元重载(
echo“
)重新加载。第二次,设置标志后,取消设置标志并运行
include()
。问题在没有服务器的情况下解决
sleep()
开销。

您可能认为它什么也没做,因为在包含完成之前,您看不到输出。请尝试在写入“找到服务器”后放入
flush
命令并刷新任何缓冲区:

打印“找到服务器\n”;
//在最坏的情况下,您可能会被迫发送“”
//有足够的“垃圾”来强制任何中间缓冲区刷新。
if(ob_get_level()){
ob_flush();
}
冲洗();
...
但是,正如所建议的,这可能是XY问题。您希望发生其他事情,而服务器端延迟2秒可能不是实现这一点的最佳方式

例如,如果您希望立即显示一条快速的“Server found”消息,然后加载一个较慢的页面(,即使它是同一个页面),您可以使用会话标志或使用jQuery和DOM加载来实现这一点


在第一种情况下,您加载同一页面两次,第一次显示消息,设置标志并使用Location或Meta reload(
echo”
)重新加载。第二次,设置了标志后,取消设置标志并运行
include()
。问题已解决,无需服务器
sleep()
开销。

包括之前的睡眠感觉各种各样的错误。。。你能描述一下你想要达到的目标吗?也许我们可以建议一种正确的方法。嗨,我尝试当用户访问cns.php页面(我尝试添加睡眠()的页面)时,它首先检测cookie“sc”(服务器创建)是否已设置,如果未设置,则从文件“noserver.php”加载内容,但如果是,它将键入“Server found”,等待2秒(这很重要)并加载服务器面板(sp.php)。我希望这次我能把它描述得很好。作为将来的参考:当你说“等2秒钟(这很重要)”之类的话时,它是。。。重要的是,您需要解释为什么这对您的应用程序至关重要。你在等答复吗?还有什么可以用的吗?正是这样的信息才能真正帮助社区为您提供正确的解决方案。如果你在问题中说了一些对你来说很重要的事情,那么对那些试图回答这个问题的人来说也很重要。。。你能描述一下你想要达到的目标吗?也许我们可以建议一种正确的方法。嗨,我尝试当用户访问cns.php页面(我尝试添加睡眠()的页面)时,它首先检测cookie“sc”(服务器创建)是否已设置,如果未设置,则从文件“noserver.php”加载内容,但如果是,它将键入“Server found”,等待2秒(这很重要)并加载服务器面板(sp.php)。我希望这次我能把它描述得很好。作为将来的参考:当你说“等2秒钟(这很重要)”之类的话时,它是。。。重要的是,您需要解释为什么这对您的应用程序至关重要。你在等答复吗?还有什么可以用的吗?正是这样的信息才能真正帮助社区为您提供正确的解决方案。如果你在你的问题中说了一些对你来说很重要的事情,那么对那些试图回答这个问题的人来说也很重要。哦,非常感谢!这是可行的,但它只是重定向到页面。我想保持url的原样,但还是要谢谢你!哦,非常感谢!这是可行的,但它只是重定向到页面。我想保持url的原样,但还是要谢谢你!