问题描述:  
          按我的理解session_start()开启后,依次运行的函数是 start , read, write , close。  
 官方资料:php 会在脚本执行完毕或调用 session_write_close() 函数之后调用write函数。
那么,在第一次运行此脚本到103行时,为什么会输出lilei呢,此时$_session中的数据是  
 从session文件中读取出来的吗?如果是,脚本不是还没有结束吗,怎么会执行write呢?如果不是,  
 此时的$_session只是相当于普通的数组吗?103行不过是输出一个普通的数组而已嘛?
回复讨论(解决方案)   求解释 
   依次输出  
 start  
 read  
 array ( [name] => lielei )  
 write  
 close  
 怎么不对呢?
print_r($_session); 后就是 ?>  
 这不就表示程序结束了吗?
$_session 是超全局数组,无需声明就可出现在程序的任何地方
依次输出   
 start   
 read   
 array ( [name] => lielei )   
 write   
 close   
 怎么不对呢?
print_r($_session); 后就是 ?>   
 这不就表示程序结束了吗?
$_session 是超全局数组,无需声明就可出现在程序的任何地方
如果print_r($_sesson);后面再加几条语句呢。  
 我的意思是第一次运行   程序运行到103行 ,加入下面还有代码,怎么$_session理面就有值了?    1、$_sesson 在 session_start(); 执行时生成  
 2、你在 print_r($_session); 后面加几个 echo 'xxxx'; 不就看到了吗  
 3、你都 $_session['name'] = 'lielei';  了,$_session 怎么会没有值呢?
1、$_sesson 在 session_start(); 执行时生成   
 2、你在 print_r($_session); 后面加几个 echo 'xxxx'; 不就看到了吗   
 3、你都 $_session['name'] = 'lielei';  了,$_session 怎么会没有值呢?
我就是想搞清楚它的内部执行原理,session_start()后执行了多个函数,我看官方是:php 会在脚本执行完毕或调用 session_write_close() 函数之后调用write函数。
那么先执行了 print,然后才是程序结束,我说的是这个执行流程,既然先执行了print,那么还没有执行write,怎么就输出了呢  
 我不懂啊
1、$_sesson 在 session_start(); 执行时生成    
 2、你在 print_r($_session); 后面加几个 echo 'xxxx'; 不就看到了吗    
 3、你都 $_session['name'] = 'lielei';  了,$_session 怎么会没有值呢?
我就是想搞清楚它的内部执行原理,session_start()后执行了多个函数,我看官方是:php 会在脚本执行完毕或调用 session_write_close() 函数之后调用write函数。
那么先执行了 print,然后才是程序结束,我说的是这个执行流程,既然先执行了print,那么还没有执行write,怎么就输出了呢   
 我不懂啊    
 $_session是存在内存中的,session_write_close()是将session数据写入服务器端上的session文件的。所以在写入文件之前,你对session的取值和设置,都是针对$_session这个变量的。    ?面未?束,不行session_write_close(); 所以不?更新到session文件,你?取的只是?存中的session的值。 
   嗯嗯,我猜也是这样,但只是猜测,所以来问下,谢谢回答
   
 
   