php程序運(yùn)行過(guò)程?
1.我們從未手動(dòng)開(kāi)啟過(guò)PHP的相關(guān)進(jìn)程,它是隨著Apache的啟動(dòng)而運(yùn)行的;
2.PHP通過(guò)mod_php5.so模塊和Apache相連(具體說(shuō)來(lái)是SAPI,即服務(wù)器應(yīng)用程序編程接口);
3.PHP總共有三個(gè)模塊:內(nèi)核、Zend引擎、以及擴(kuò)展層;
4.PHP內(nèi)核用來(lái)處理請(qǐng)求、文件流、錯(cuò)誤處理等相關(guān)操作;
5.Zend引擎(ZE)用以將源文件轉(zhuǎn)換成機(jī)器語(yǔ)言,然后在虛擬機(jī)上運(yùn)行它;
6.擴(kuò)展層是一組函數(shù)、類(lèi)庫(kù)和流,PHP使用它們來(lái)執(zhí)行一些特定的操作。
比如,我們需要mysql擴(kuò)展來(lái)連接MySQL數(shù)據(jù)庫(kù);
7.當(dāng)ZE執(zhí)行程序時(shí)可能會(huì)需要連接若干擴(kuò)展,這時(shí)ZE將控制權(quán)交給擴(kuò)展,等處理完特定任務(wù)后再返還;
8.最后,ZE將程序運(yùn)行結(jié)果返回給PHP內(nèi)核,它再將結(jié)果傳送給SAPI層,最終輸出到瀏覽器上。