PHP Sleep - 页面加载问题

Posted

技术标签:

【中文标题】PHP Sleep - 页面加载问题【英文标题】:PHP Sleep - Page loading issue 【发布时间】:2020-08-25 01:50:30 【问题描述】:

我在创建脚本时遇到了一些问题。所以基本上我确实需要创建一个执行函数的代码,等待 x 秒并执行一秒。

P.S:这两个函数通过 echo 显示文本。

所以我所做的是我确实在两个函数之间使用了睡眠。问题是,当我加载页面时,浏览器的加载栏会一直加载,直到 sleep(x) 完成,我不想这样做,因为它会阻止页面的其他内容(html、css)加载。

我的代码是这样的

execute_function1();
sleep(10);
execute_function2();

所以我想知道是否有任何其他方法可以在不使用睡眠的情况下创建这样的东西。所以我在网站上的所有内容(html、css)都可以加载,即使两个 php 函数之间有一些等待。

提前谢谢你!

注意安全!

【问题讨论】:

这很难完成,因为输出经过的每一层(PHP、Web 服务器、代理...)都会尝试缓冲输出。你可以在this question找到一些想法。 改用 Javacsript。你无法在 PHP 中实现它 【参考方案1】:

在这里解决!!!

execute_function1(); 
$now = time();
while ($now + 120 > time())  // Set your own Sleep time 
execute_function2();
 

【讨论】:

这在什么情况下有帮助?我想它并没有比原始代码更好 - 它甚至更糟,但也许我对这个 php 的东西还不够深入 - 据我所知,这个仍然阻止加载页面并且它执行 execute_function2() 更多不止一次。【参考方案2】:

您可以将您的内容发送到客户 PC - 检查 https://www.php.net/manual/de/function.ob-flush.php 它会改善你的网站行为,但不会让它感觉“干净”、“蓬松”和使用起来很有趣。也许这个可以帮助你实现你想要的 - 但我不会这样做。

正如(某些人)已经评论的那样:我不建议这样做。 PHP 仍然(在这种情况下)是一个完全阻塞的技术解决方案 - 您的浏览器将继续“旋转”直到 PHP 脚本结束。您只能隐藏它的工作方式,但您将无法构建您想要的完全异步网站。使用其他技术(带有 AJAX 的 javascript 和类似的东西)。

【讨论】:

以上是关于PHP Sleep - 页面加载问题的主要内容,如果未能解决你的问题,请参考以下文章

同时使用time.sleep()循环而无需重新加载页面

如何将 php 函数延迟 2 分钟?

关于selenium的智能等待页面加载的问题

如何从另一个页面加载 .php 页面并加载动态内容

故意减慢 HTML/PHP 页面加载以进行测试

PHP页面需要很长时间才能加载