2011-03-02 44 views
7

這可能是一個基本的問題,但每次用戶從服務器調用一個php文件,它是否會從該服務器創建一個新進程?爲每個網頁請求創建新的進程?

例如,我有一個基本的表單(讓我們說index.php),提交一個文本到另一個php文件。 在那個php文件中,我打印了posix_getpid()

我在兩個標籤中打開我的index.php填寫並提交了一個文本,我結束了與 兩個不同的PID在每個選項卡上。

這導致我得出結論,服務器可能會爲每個腳本創建一個新進程。 我對不對?

乾杯!

回答

5

我假設你運行apache作爲你的web服務器。

當請求進入時,apache啓動一個新的線程。然後在這個新的therad上調用PHP,因此每次都得到一個新的進程ID。

這當然大大簡化了。

我建議您閱讀this文章以獲得更深入的瞭解。

編輯:這個過程似乎不同平臺之間。它的工作原理與我在Windows上描述的一樣,但是在Unix上執行多個apache進程。

+2

好的,所以這是因爲apache。但是你的解釋對我來說有點奇怪,因爲線程和進程是完全不同的。我的意思是,如果apache啓動一個新線程,那意味着每個php腳本都應該有apache pid! – David 2011-03-02 18:26:15

+0

雖然我會閱讀文章。 – David 2011-03-02 18:28:08

+0

不,PID來自新創建的PHP實例,而不是apache進程。 – alexn 2011-03-02 18:28:32

相關問題