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

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