Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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 使用无限while循环动态更改值是一种不好的做法吗?_Php_Loops_While Loop_Sleep - Fatal编程技术网

Php 使用无限while循环动态更改值是一种不好的做法吗?

Php 使用无限while循环动态更改值是一种不好的做法吗?,php,loops,while-loop,sleep,Php,Loops,While Loop,Sleep,我想要一段文本,它已经每10分钟动态更改一次,这样做就不会刷新页面。我的想法大致如下: <?php while (1 < 2) { echo $value; sleep(60); } ?> 我意识到这是一种让while循环运行的愚蠢方法,我认为它可以与while{}一起工作,但我只是想确保,在我实际编写这篇文章时,这会得到纠正,只要这样做不可怕。如果有更好的方法,我很想听到!谢谢 编辑:我刚刚注意到它会在第一个之后回显值,有没有切割器方法让

我想要一段文本,它已经每10分钟动态更改一次,这样做就不会刷新页面。我的想法大致如下:

<?php
   while (1 < 2) {
      echo $value;
      sleep(60);
   }
?>
我意识到这是一种让while循环运行的愚蠢方法,我认为它可以与while{}一起工作,但我只是想确保,在我实际编写这篇文章时,这会得到纠正,只要这样做不可怕。如果有更好的方法,我很想听到!谢谢

编辑:我刚刚注意到它会在第一个之后回显值,有没有切割器方法让它替换它

Edit2以下是我已经编写的用于检索变化值的php函数:

<?php
   function getTotal($basePrice){
      $dogeValue = file_get_contents("https://www.dogeapi.com/wow/?a=get_current_price");
      $postage = .49/$dogeValue;
      return round($sellAmount = $basePrice/$dogeValue - $postage - ($basePrice*0.1/$dogeValue));
   }
?>

简短的回答是:是的,这是一种糟糕的做法

原因包括:

您绑定的服务器可能会超时 除非您使用缓冲,否则事情不会在您想要的时间反映出来 您永远不会将关闭标记发送到浏览器或以后发生的任何事情。 覆盖已经存在的内容是一件棘手的事情,因此最终的结果是输出增加而不是改变。 建议:

使用客户端代码javascript、AJAX—不要尝试在服务器端执行此操作

您可以在中看到定期AJAX的示例

对于周期性JavaScript,请参见

中的许多好答案。此脚本将不会向您显示任何内容,因为在处理php脚本之前,web服务器不会向输出发送任何内容,考虑到您的无限循环,它将永远不会发生


而不是这个不工作的想法,使用Ajax、CRON Job或甚至纯JavaScript,它当然非常简单和合理。

你不能用客户端JavaScript做些什么?我可能会考虑使用CRON任务来做这件事。为什么你要这样做而不是每10分钟运行一个CRON?这将继续添加到文本中。而且我认为你的标签永远不会关闭…为什么1<2而不是在正确的时候?不完全正确。有些web服务器会在运行时输出,如果有缓存或没有缓存,我指的是使用apache的apache或NginXWell等常规web服务器,我可以在运行时输出,我在过程中使用了该方法,因为cron作业不是一个选项,页面必须能够快速加载,所以运行所需的时间是在所有输出之后html