国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

webman開發(fā)中控制器復(fù)用的問題

workers

問題描述

文檔中說,關(guān)閉控制器復(fù)用的前提下,跟傳統(tǒng)php開發(fā)一致,請求結(jié)束后控制器的實例會銷毀、相關(guān)內(nèi)存會釋放。

那么問題來了,在關(guān)閉控制器復(fù)用的前提下,控制器請求的其他類(靜態(tài)調(diào)用:如模型類Table::function或其他靜態(tài)調(diào)用方法,new的其他類如composer的類或第三方extend或service類),這些實例和相關(guān)內(nèi)存是否會被釋放?

2671 3 5
3個回答

liziyu

這個我也是一知半解的,標(biāo)記一下。

  • 暫無評論
Le

new 的對象也會釋放,但是靜態(tài)變量會保留

  • 暫無評論
walkor 打賞

workerman不會改變php的gc規(guī)則,寫業(yè)務(wù)一般都是使用臨時變量,臨時變量都會自動回收的,這個與控制器是否復(fù)用沒有關(guān)系。

例如

function index()
{
   // 臨時變量$object,index函數(shù)執(zhí)行完會自動釋放
   $object = new ClassOne();
   return $object->method();
}

有些類內(nèi)部將類實例保存到了靜態(tài)屬性里留著以后復(fù)用,例如數(shù)據(jù)庫類調(diào)用Db::table('xxx')->firt()時,如果數(shù)據(jù)庫連接對象不存在,則會new一個并保存在類的靜態(tài)數(shù)組里保證它不被釋放,如果存在則復(fù)用這個數(shù)據(jù)庫連接對象。這種故意不釋放并不是問題,反而是一種優(yōu)化,復(fù)用可以大大增加應(yīng)用性能。

所以業(yè)務(wù)開發(fā)時不必特意去考慮變量釋放問題,臨時對象都會釋放。需要復(fù)用的也沒必要釋放。

webman開發(fā)和傳統(tǒng)開發(fā)體驗一樣,沒必要糾結(jié)內(nèi)存問題。另外webman自帶內(nèi)存檢測,發(fā)現(xiàn)某個進(jìn)程占用內(nèi)存即將超過php.ini限定memory_limit值,會自動安全reload這個進(jìn)程,不影響業(yè)務(wù),對客戶來說無感知。

  • workers 2023-04-10

    那調(diào)用的類的構(gòu)造函數(shù)是不是只會執(zhí)行一次

  • walkor 2023-04-10

    new 一次執(zhí)行一次,這個是PHP特性啊,webman不會改變PHP特性

  • workers 2023-04-11

    謝謝老大

年代過于久遠(yuǎn),無法發(fā)表回答
??