PHP中的MINI的執行過程

來源:互聯網
上載者:User
      前幾天新宸分享了PHP Script的lifecycle, 由於那天需要參加公司的培訓,未去參加新宸的LifeCycle的分享。上一年有段時間很是癡迷於PHP的擴充,想弄清楚apache對PHP的擴充是如何調用和執行的。鑽研了好久,有了一個大致的概念,但沒有新宸這樣做一個比較清楚的總結,感謝新宸的ppt。
      昨天晚上看新宸的ppt,發現一點和我以前的認識不同的地方。在DSO的多進程模式中,新宸提到apache的主進程會初始化所有的擴充模組,然後fork出子進程,每個子進程再次初始化所有的擴充模組一次。在我的印象中,模組的初始化工作僅在主進程中雲運行一次,子進程是不會再做相同的操作。
      做了一個擴充實驗了一下,發現的確如此, 子進程是不會再次初始化擴充模組的
      不過在和新宸一起做驗證的過程中發現了另一個比較好玩的事情,雖然子進程不做初試化功能,但是每個子進程都會執行擴充模組的卸載邏輯。這個是我以前完全沒意識到的。在我的概念中,擴充模組的初試化和卸載邏輯都是在主進程中完成的,沒子進程什麼事兒。
      所以結論是: 在DSO的多進程模式下,擴充模組的MINI僅在主進程中執行一次,但MSHUTDOWN會在所有的子進程中都執行一次。
     通過上述結論可以得到這麼一個注意事項:需要很小心的處理MSHUTDOWN內的邏輯,否則很容易發生在apache stop或者restart時發生core dump的現象。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.