for循环肯定不行,因为php设置有buffer的,需要达到一定长度才会输出到浏览览器的.
你可以修改它的设置,不过不建议这样做.可以用ajax.

解决方案 »

  1.   

    AJax地归调用自身好象可以达到这个效果
      

  2.   

    AJax怎麼做這個?每發一封郵件就請求一次執行網頁來代替for嗎?那for 50次不是要請求50次執行網頁?
      

  3.   

    精确的就是发送50次ajax请求.不精确的话,就是程序有两部分来执行.一部分执行发送邮件请求,并且完成一次将结果保存在第三方.另一个程序每秒向后台读取第三方数据,获取执行结果.
      

  4.   


    那样还是要AJax请求多次请求第三方啊,比如我用for发邮件,for一次就将结果保存在.txt文件里,然后还是要不断请求txt来获得信息啊。
      

  5.   

    不用ajax,可以使用ob_开头的函数,你看看手册就明白了例如http://cn2.php.net/manual/en/function.ob-flush.php
      

  6.   

    好,我用下面代码测试,可以输出了,但这样会js出错,提示找不到showmailinfo无法显示,怎么回事?
    如果不用js直接输出内容的话可以for一次输出一次内容,但会累加内容,整个网页越来越多内容。怎么解决?
    ==================
    ob_implicit_flush(true);
    echo "<div id=\"showmailinfo\"><div> ";
    for ($i = 1; $i <= 10; $i++) { 
    if(0){ 
      echo " <script language=\"javascript\">document.getElementById('showmailinfo').innerHTML='第".$i."封邮件发送失败。'; </script>"; 
    }else{ 
      echo " <script language=\"javascript\">document.getElementById('showmailinfo').innerHTML='第".$i."封邮件发送成功。'; </script>"; 
      } 
        ob_flush();
        sleep(1);
    }
    ==============================
      

  7.   

    ob_implicit_flush(true); 
    for ($i = 1; $i <= 10; $i++) { 
    if(0){ 
      echo "".$i."封邮件发送失败。'"; 
    }else{ 
      echo "".$i."封邮件发送成功。'"; 
      } 
        ob_flush(); 
        sleep(1); 

    =========
    这样就会琢条输出内容:
    1封邮件发送成功。
    2封邮件发送成功。
    3封邮件发送成功。
    。我只要输出一句话,然后就是数字变化就行了,怎么做到?
      

  8.   

    这样可以了,谢谢ob_implicit_flush(true); 
    echo "<body></body>";
    for ($i = 1; $i <= 10; $i++) { 
    if(0){ 
      echo "<script>document.body.innerHTML='';</script>第".$i."封邮件发送失败。'"; 
    }else{ 
      echo "<script>document.body.innerHTML='';</script>第".$i."封邮件发送成功。'"; 
      } 
        ob_flush(); 
        sleep(1);