亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

請教PHP中全局變量和超全局變量的生命周期

請教PHP中全局變量和超全局變量的生命周期

PHP
金澤城 2017-03-08 16:39:18
各位前輩好,我是新學習php的,以前是用c++的,所以對于php中變量的生命周期總是很困惑,通過多種學習渠道大致弄懂了臨時變量的作用域和生命周期,但是對于全局變量還是很疑惑,都說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?/>";先執行?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頁面之間傳遞,就是前端操心的事情了。是這樣嗎?感謝您的指點!
查看完整描述

1 回答

已采納
?
wldraa

TA貢獻33條經驗 獲得超17個贊

php的全局變量的生命周期是在一個請求里。 httpd這個進程是一個后臺進程,負責在有請求的時候新開一個線程(進程?)去處理他。新開的那個線程的生命周期就是全局變量的周期。 要實現一個接口里往內存寫數據,另一個接口讀,可以選擇使用 session或者redis(或memcache),如果性能要求不是特別高一般使用數據庫
查看完整回答
2 反對 回復 2017-03-09
  • 金澤城
    金澤城
    非常感謝您的熱心指點,終于明白了。多謝!
  • 1 回答
  • 0 關注
  • 1758 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號