c代码如下:#include "stdafx.h"
#include <windows.h>
void fun1();
void fun2();
void fun3();
int _tmain(int argc, _TCHAR* argv[])
{
fun1();
fun2();
fun3();
}void fun1()
{
printf("1");
}void fun2()
{
Sleep(10000);
}
void fun3()
{
printf("3");
}PHP代码如下:fun1();
fun2();
fun3();
function  fun1()
{
echo 1;
}
function  fun2()
{
sleep(10);}
function  fun3()
{
echo 3;
}
在C中,会按顺序依次执行,即先输出1后再等待10s再输出3,但是在PHP中,会先等待10s钟再输出1和3,请问下PHP执行的机制是咋样的?头痛啊....

解决方案 »

  1.   

    因为php会等到程序执行结束后才会刷出缓存数据,或者大于某个长度的时候(好像是1024)
      

  2.   

    其实还是顺序执行的。
    fun1();
    fun2();
    fun3();
    function  fun1()
    {
        echo date('h:i:s');
    }
    function  fun2()
    {
        sleep(10);}
    function  fun3()
    {
        echo date('h:i:s');
    }
      

  3.   

    要看效果,用下面的代码<?php // 填满浏览器输出栈
    echo str_repeat(' ', 4096);
    fun1();
    fun2();
    fun3();
    function  fun1()
    {
        echo 1;
    endFlush();
    }
    function  fun2()
    {
        sleep(10);}
    function  fun3()
    {
        echo 3;
    endFlush();
    }
    function endFlush() {
    @ob_flush();
    flush();
    }
      

  4.   

    道理其实很简单,c是C/S语言,他可以马上执行马上出结果
    而PHP是B/S语言,一次请求不可能像C似得给你发送三次数据到屏幕,客户端请求服务端,服务端处理完数据之后一次性返回结果到客户端屏幕,这就是根本差异
      

  5.   


    ob_start();
    ob_end_flush();
    for($i = 1; $i <= 300; $i++ )echo ' ';//楼主的问题主要在这块$i = 0;
    while(1) {
    echo $i;
    sleep(1);
    flush();
    $i++;
    }