PHP刷新问题

时间:2011-05-08 18:46:12

标签: php infinite-loop flush

好的,所以我有这个PHP脚本在一个很好的小无限循环中运行(有睡眠,不用担心)。我用它作为一个页面,我可以从任何计算机去监控我的数据库统计信息。每隔2秒,它会从数据库中获取统计数据并将其显示在屏幕上。

现在,这在我的Windows机器上的XAMPP上运行得很好。我试图让它在我的Linux网络服务器上运行,用PHP 5.3.5运行apache2,但由于某种原因它实际上不会显示任何内容(它不会转到空白页面,它只是停留在页面上我在进入监控页面之前,但是“工作”车轮旋转了。我觉得这是某种缓存的东西,它不想显示页面,直到它完成运行脚本(虽然我需要它)。我每隔2秒就使用flush()和ob_flush(),并确保在我的php.ini文件中output_buffering = off和zlib.output_compression = off。

我意识到这个问题似乎已经被问了很多,但我已经尝试了所有我能找到的关于这个问题的最终失败。

注意:就像我说的那样,这对我的XAMPP安装使用apache和PHP 5.3.6很有效。我的问题不是关于如何找到替代品,而是关于为什么它在那里工作而不是在我的linux网络服务器上更多。

2 个答案:

答案 0 :(得分:2)

让php脚本运行“无限”的时间几乎是不合适的。你可以:

  • 使用html(<meta http-equiv="refresh" content="5">
  • 将页面设置为重新加载
  • 将其设置为运行并通过cron脚本显示
  • 使用javascript定期重新加载页面
  • 我没有想到的其他东西

所有这些解决问题的方法都可以为您节省您现在遇到的头痛类型。

答案 1 :(得分:1)

这是你可以做的,

让您的脚本将参数写入javascript,这样您就可以使用新参数每2秒重新加载一次页面。例如:

<script type='text/javascript'>

setTimeout(function() {
   location.href="http://www.example.com/?jobid=<?php echo $nextJobId ?>";
},2000);
</script>

所以如果你需要在每个sql查询上做一个Db偏移,你可以在url中传递该参数。拥有一个无限循环似乎是一个好主意,但也许你应该重新评估你的代码,看看你是否真的需要它,或者你是否可以这样实现它