欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

php for循环时间控制多少秒钟输出一次

1)可以使用 ajax 或 js

string '{"multicast_id":4917012850725514945,"success":0,"failure":38,"canonical_ids":0,"results":[{"error":"MismatchSenderId"},{"error":"MismatchSenderId"},{"error":"MismatchSenderId"},{"error":"MismatchSenderId"},{"error":"MismatchSenderId"},{"error":"MismatchSenderId"},{"error":"MismatchSenderId"},{"error":"MismatchSenderId"},{"error":"MismatchSenderId"},{"error":"MismatchSenderId"},{"error":"MismatchSenderId"},{"error":"MismatchSenderId"},{"error":"MismatchSenderId"},{"error":"MismatchSenderId"},{"error":"Mismat'... (length=1193)
string '{"multicast_id":4917012850725514945,"success":0,"failure":38,"canonical_ids":0,"results":[{"error":"MismatchSenderId"},{"error":"MismatchSenderId"},{"error":"MismatchSenderId"},{"error":"MismatchSenderId"},{"error":"MismatchSenderId"},{"error":"MismatchSenderId"},{"error":"MismatchSenderId"},{"error":"MismatchSenderId"},{"error":"MismatchSenderId"},{"error":"MismatchSenderId"},{"error":"MismatchSenderId"},{"error":"MismatchSenderId"},{"error":"MismatchSenderId"},{"error":"MismatchSenderId"},{"error":"Mismat'... (length=1193)
<script type="text/javascript">
function show_message(message) {
    document.getElementById('notice').innerHTML += message + '<br />';
    document.getElementById('notice').scrollTop = 100000000;
}
 
 
</script>
 
<div id="notice" style="width:950px; height: 200px; overflow:scroll; word-break: break-all; word-wrap:break-word;"></div>
 
<?php
// echo str_pad(" ", 256); 
// echo str_pad(" ", 1000);  // 保证缓冲区数量
function showjsmessage($message) {
    echo '<script type="text/javascript">show_message(\''.addslashes($message).' \');</script>'."\r\n";
    flush();
    ob_flush();
}
 
for ($i=0; $i < 100; $i++) {
    showjsmessage($i);
    sleep(1);
    // usleep(100000);
}
?>
来自 http://www.cnblogs.com/adtuu/p/4707748.html


 
回复次数:9

 

php使用ob_flush不能每隔一秒输出原理分析

本文实例讲述了php使用ob_flush不能每隔一秒输出原理。分享给大家供大家参考。具体分析如下:

实现功能:

浏览器每隔一秒输出一个数字。

php.ini配置为:

版本5.3

implicit_flush = off
output_buffering = off

另:查看output_buffering是否打开,可以:

复制代码代码如下:
var_dump(ini_get('output_buffering'));

 

好我们再来看看这段代码:

1
2
3
4
5
6
7
8
9
10
11
<?php
  $i = 3;
  ob_start();
  while ($i--) {
    echo $i, "<br />";
    ob_flush();
    flush();
    sleep(1);
  }
  ob_end_clean();
?>

可为什么:这段代码不能每隔一秒输出呢??

原因分析:

apache运行原理:当你访问一个地址(发送请求)后,apache启动PHP,那么php执行是页面级的,即如果有可执行的代码:它全部执行完后再丢给apache,apache再丢给browser显示结果

如何实现?

如果是cli 显示结果方式又不一样,那里不一样呢?

linux cmd:

php5 test.php

由php直接执行,不经过apache,web service,就可以实现:

1
2
3
4
5
6
7
8
<?php
  $i = 3;
  while ($i--) {
    echo $i, "\n";
    sleep(1);
  }
  ob_end_clean();
?>

希望本文所述对大家的php程序设计有所帮助。
如对本文有疑问,请提交到交流社区,广大热心网友会为你解答!! 点击进入社区

来自 http://www.jb51.net/article/67084.htm

 

普通分类: