php变量生命周期,请教PHP中全局变量和超全局变量的生命周期

各位前辈好,我是新学习php的,以前是用c++的,所以对于php中变量的生命周期总是很困惑,通过多种学习渠道大致弄懂了临时变量的作用域和生命周期,但是对于全局变量还是很疑惑,都说php是一请求一进程的,于是我写了如下两段代码进行测试:

in.php 文件:

$innumber = 10;

echo "全局变量 innumber = ".$GLOBALS['innumber']."
";

$_SESSION['innumber'] = $innumber;

echo "超全局变量 innumber = ".$_SESSION['innumber']."
";

echo "本进程PID = ".getmypid()."
";

include 'inB.php';

inB.php 文件:

echo "全局变量 innumber = ".$GLOBALS['innumber']."
";

echo "超全局变量 innumber = ".$_SESSION['innumber']."
";

echo "本进程PID = ".getmypid()."
";

先执行 in.php,输出:

全局变量 innumber = 10

超全局变量 innumber = 10

本进程PID = 9224

全局变量 innumber = 10

超全局变量 innumber = 10

本进程PID = 9224

再执行 inB.php,输出:

Notice: Undefined index: innumber in ...

全局变量 innumber =

Notice: Undefined variable: _SESSION in ...

超全局变量 innumber =

本进程PID = 9224

我不是很懂为什么执行 inB.php 时,全局变量$GLOBALS['innumber']和超全局变量$_SESSION['innumber']就不存在了呢?

假如是一请求一进程,可是我两次执行得到的pid都是一样的,我到系统里看了一下,这个是apache的httpd.exe进程,说明进程是一直存在没有退出过的,于是就更不懂为啥第二次执行inB.php时全局变量就没了?

这样子的话,是不是就完全没办法实现:

调用A接口时,往后台内存存个数据,等调用B接口时,直接使用内存里的这个数据了?

是不是就得由前端来负责这个数据的传递了,就是:

调用A接口请求时,带这个数据作为参数;等调用B接口时,还要带上这个数据。至于这个数据怎么在前端的A页面和B页面之间传递,就是前端操心的事情了。

是这样吗?

感谢您的指点!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值