沒有開啟控制器復(fù)用,內(nèi)存常駐使得靜態(tài)屬性也是保存嗎?
每次請(qǐng)求count都會(huì)加一,是因?yàn)閮?nèi)存常駐,類文件加載進(jìn)內(nèi)存不會(huì)銷毀,所以使得跟隨類文件的靜態(tài)的類屬性一直保留在內(nèi)存中嗎?
<?php
namespace app\controller;
use support\Request;
class IndexController
{
private static $count=0;
public function index(Request $request){
self::$count++;
return self::$count;
}
}
$count 你都聲明了全局靜態(tài)變量。當(dāng)前是靜態(tài)變量了,
至于你開啟控制器文檔都說(shuō)明很清楚:
復(fù)用的話一個(gè)進(jìn)程只new一次控制器,請(qǐng)求結(jié)束后不釋放這個(gè)控制器實(shí)例,當(dāng)前進(jìn)程的后續(xù)請(qǐng)求會(huì)復(fù)用這個(gè)實(shí)例。復(fù)用控制器性能更好,但是不符合大部分開發(fā)者習(xí)慣。
不開啟控制器復(fù)用方法里面的變量都是局部變量,用完就是銷毀,不會(huì)常駐的。
我的意思是請(qǐng)求結(jié)束后這個(gè)靜態(tài)屬性還在內(nèi)存中是不是因?yàn)閮?nèi)存常駐不銷毀內(nèi)存中的類信息,因?yàn)槠胀≒HP請(qǐng)求后,加載的信息都會(huì)銷毀
靜態(tài)變量
屬于是PHP的基礎(chǔ)知識(shí),在類中定義的靜態(tài)變量和腳本里面定義的靜態(tài)變量區(qū)別就是作用域的不同,可以在PHP手冊(cè)的類與對(duì)象的章節(jié)找到相關(guān)的解釋。
我的意思是請(qǐng)求結(jié)束后這個(gè)靜態(tài)屬性還在內(nèi)存中是不是因?yàn)閮?nèi)存常駐不銷毀內(nèi)存中的類信息,因?yàn)槠胀≒HP請(qǐng)求后,加載的信息都會(huì)銷毀
FPM的是一次請(qǐng)求全量加載所有需要用到的腳本,請(qǐng)求結(jié)束之后會(huì)銷毀。webman的靜態(tài)變量的保留當(dāng)前進(jìn)程的,所以只有重啟進(jìn)程這個(gè)變量才會(huì)重置