shell - linux kill php進程,對PHP的生命週期產生怎樣的影響?

來源:互聯網
上載者:User
關鍵字 php shell linux

如果我kill PHP的進程

PHP的進程是否會執行 __destruct()解構函式?

對PHP的生命週期起到什麼影響?

我覺得linux KILL的話,已經脫離了PHP的掌控了,跟PHP生命週期已經沒有關係了,是這樣理解嗎?
如果這樣,那PHP進程佔用的記憶體是誰來維護?

另:如果我的需求是:通知PHP進程結束(比如PHP當前是個死迴圈),讓PHP自己完成生命週期,要怎麼處理?

回複內容:

如果我kill PHP的進程

PHP的進程是否會執行 __destruct()解構函式?

對PHP的生命週期起到什麼影響?

我覺得linux KILL的話,已經脫離了PHP的掌控了,跟PHP生命週期已經沒有關係了,是這樣理解嗎?
如果這樣,那PHP進程佔用的記憶體是誰來維護?

另:如果我的需求是:通知PHP進程結束(比如PHP當前是個死迴圈),讓PHP自己完成生命週期,要怎麼處理?

類似在windows下強制結束進程,會提示你丟失有關資料,因為進程在不知情的情況下被突然結束,不能有效處理善後。

kill 進程已經不在PHP的管理範圍了,這個是系統層面的了。

所以解構函式也不會執行,因為執行的前提是PHP主動觸發,現在PHP都沒了。

kill前是根據配置申請記憶體,php自己維護、回收。kill之後的記憶體釋放當然是屬於linux維護了,即使剩餘殭屍進程,也是系統管理。

通知PHP進程結束,可以試試訊號,fpm內建訊號處理,restart、stop等。

通常不會,php代碼通常都不會去捕獲kill發送的訊號。
而且我也不確定php是不是有能力捕獲。

另:如果我的需求是:通知PHP進程結束(比如PHP當前是個死迴圈),讓PHP自己完成生命週期,要怎麼處理?

解決方案

開始時間 = 目前時間生命週期時間 = 300while(ture){     if (目前時間 - 開始時間) >=300         退出     else         執行商務邏輯}

不滿足題主需求~靜待高明

KILL一個進程,進程的記憶體當然由作業系統回收
如果你有訊號捕獲的需求,請看PHP的PCNTL擴充

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.