各位前輩好,我是新學(xué)習(xí)php的,以前是用c++的,所以對(duì)于php中變量的生命周期總是很困惑,通過(guò)多種學(xué)習(xí)渠道大致弄懂了臨時(shí)變量的作用域和生命周期,但是對(duì)于全局變量還是很疑惑,都說(shuō)php是一請(qǐng)求一進(jìn)程的,于是我寫(xiě)了如下兩段代碼進(jìn)行測(cè)試:in.php?文件:$innumber?=?10;echo?"全局變量?innumber?=?".$GLOBALS['innumber']."<br?/>";$_SESSION['innumber']?=?$innumber;echo?"超全局變量?innumber?=?".$_SESSION['innumber']."<br?/>";echo?"本進(jìn)程PID?=?".getmypid()."<br?/>";include?'inB.php';inB.php?文件:echo?"全局變量?innumber?=?".$GLOBALS['innumber']."<br?/>";echo?"超全局變量?innumber?=?".$_SESSION['innumber']."<br?/>";echo?"本進(jìn)程PID?=?".getmypid()."<br?/>";先執(zhí)行?in.php,輸出:全局變量?innumber?=?10超全局變量?innumber?=?10本進(jìn)程PID?=?9224全局變量?innumber?=?10超全局變量?innumber?=?10本進(jìn)程PID?=?9224再執(zhí)行?inB.php,輸出:Notice:?Undefined?index:?innumber?in?...全局變量?innumber?=?Notice:?Undefined?variable:?_SESSION?in?...超全局變量?innumber?=?本進(jìn)程PID?=?9224我不是很懂為什么執(zhí)行?inB.php?時(shí),全局變量$GLOBALS['innumber']和超全局變量$_SESSION['innumber']就不存在了呢?假如是一請(qǐng)求一進(jìn)程,可是我兩次執(zhí)行得到的pid都是一樣的,我到系統(tǒng)里看了一下,這個(gè)是apache的httpd.exe進(jìn)程,說(shuō)明進(jìn)程是一直存在沒(méi)有退出過(guò)的,于是就更不懂為啥第二次執(zhí)行inB.php時(shí)全局變量就沒(méi)了?這樣子的話,是不是就完全沒(méi)辦法實(shí)現(xiàn):調(diào)用A接口時(shí),往后臺(tái)內(nèi)存存?zhèn)€數(shù)據(jù),等調(diào)用B接口時(shí),直接使用內(nèi)存里的這個(gè)數(shù)據(jù)了?是不是就得由前端來(lái)負(fù)責(zé)這個(gè)數(shù)據(jù)的傳遞了,就是:調(diào)用A接口請(qǐng)求時(shí),帶這個(gè)數(shù)據(jù)作為參數(shù);等調(diào)用B接口時(shí),還要帶上這個(gè)數(shù)據(jù)。至于這個(gè)數(shù)據(jù)怎么在前端的A頁(yè)面和B頁(yè)面之間傳遞,就是前端操心的事情了。是這樣嗎?感謝您的指點(diǎn)!
1 回答
已采納

wldraa
TA貢獻(xiàn)33條經(jīng)驗(yàn) 獲得超17個(gè)贊
php的全局變量的生命周期是在一個(gè)請(qǐng)求里。
httpd這個(gè)進(jìn)程是一個(gè)后臺(tái)進(jìn)程,負(fù)責(zé)在有請(qǐng)求的時(shí)候新開(kāi)一個(gè)線程(進(jìn)程?)去處理他。新開(kāi)的那個(gè)線程的生命周期就是全局變量的周期。
要實(shí)現(xiàn)一個(gè)接口里往內(nèi)存寫(xiě)數(shù)據(jù),另一個(gè)接口讀,可以選擇使用 session或者redis(或memcache),如果性能要求不是特別高一般使用數(shù)據(jù)庫(kù)
- 1 回答
- 0 關(guān)注
- 1766 瀏覽
添加回答
舉報(bào)
0/150
提交
取消