代码示例如下:class c1{
function a1(){
   echo "11111111111111";
   a2();
}
function a2(){
   echo "2222222222222";
}}//调用
c1->a1();
我的一份代码结构如上。但是产生了一个很纠结的问题是,在我的开发环境中没有任何问题,先执行a1()中的输出后执行a2()的内容,但是我搞到服务器上之后同样的代码确是a2()先执行了,然后才执行的a1()中的输出。这种情况是因为什么原因呢?有哪些因素?会不会是和运行环境有关系?我的开发环境用的是apache 服务器上用的是iis·
求教~~

解决方案 »

  1.   


    class c1{ function a1(){
      echo "11111111111111<br>";
      $this->a2();
    }
    function a2(){
      echo "2222222222222<br>";
    }
    }$myc1=new c1();
    $myc1->a1();结果为11111111111111
    2222222222222
    应该是先a1后a2
      

  2.   

    这种简单的输出是没问题的··
    实际代码要复杂的多···
    按正常来说是应该顺序执行的啊··我a1()的方法是校验 a2()的方法是处理·
    大概为:
    a1()中判断数据库值不为“1” 执行a2()··
    a2() 执行业务操作 然后 修改数据库值为“1” 本地是没问题的··搞到服务器上先执行了a2()的内容··然后执行a1()的校验,错误返回了··为什么同样一份代码不同的环境下执行结果不一样呢?
    我查了一下,也有类似的问题,不过不多,也没有明确的解释
    下面这个帖子就是类似的问题
    http://topic.csdn.net/u/20090804/10/03dbec12-7de2-45ad-a0be-6335f03fa211.html
      

  3.   

    不可能是并行 也不太可能是服务器导致的逻辑处理顺序的颠倒
    只可能是你程序执行的过程中,因为服务器的原因导致某些分支执行出现问题 所以走叉了  
    debug就知道你的a2是在啥时候被执行的了
      

  4.   

    应该是楼主你的问题,iis其实也不会出这问题的。
      

  5.   

    你有没有看你自己在6L贴出来的网址? 看一看
    另外debug一下
      

  6.   

    整个判断不行吗 function a1(){
          echo "11111111111111<br>";
          $aa=true;
          if($aa){
            $this->a2();
          }
        }