您好,欢迎访问一九零五行业门户网

自定义session处理 关于read write顺序问题

问题描述:
         按我的理解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的值。
嗯嗯,我猜也是这样,但只是猜测,所以来问下,谢谢回答
其它类似信息

推荐信息