2010-01-09 88 views
1

如果一個Web用戶正在進入我的PHP網站並與它交互,那麼這個PHP文件將打開一個進程(使用一個線程),然後在php文件完成邏輯並將輸出發送到瀏覽器之後,該過程是關閉?一個php文件打開一個進程,但隨後進程關閉?

因爲如果它沒有關閉,那麼這將意味着該文件中變量的值將被取消刪除權?但是由於您始終必須使用值初始化新變量,這意味着該過程已關閉?

我剛剛在傳統的桌面應用程序中想到了這個原因,我認爲這個過程不會關閉,除非你關閉它。

回答

2

PHP是REQUEST驅動的。正如您所描述的那樣,Web服務器的交互。

  • 請求到達服務器
  • 阿帕奇(例如)創建PHP可執行
  • 你的PHP腳本(S)被解僱了,變量init'd
  • 你的腳本線程(S)執行完畢,變量死
  • 阿帕奇清理
  • 你得到服務器的響應

是的,在服務器上運行的桌面應用程序和php腳本在這些術語上有很大不同。

+0

好的,這個過程在php文件的最後一行被執行後關閉。 – ajsie 2010-01-09 14:35:53

+0

不,不一定。閱讀我的答案。 – 2010-01-09 14:39:03

+0

但是當腳本完成時,與腳本執行相關的所有由PHP分配的資源(變量,文件/數據庫句柄,網絡套接字等)都被清除,但是如果它在Apache中以mod_php身份運行,或者以fastCGI身份運行,此時PROCESS不會終止 - 它只會進入待機狀態,直到它有新的服務請求。 C. – symcbean 2010-01-09 18:28:46

2

這取決於配置。例如,如果php作爲FastCGI運行,該進程將不會關閉,並將繼續運行以等待新的請求。

儘管您可以確定一件事情:不管配置如何:當腳本結束時,所有變量/ etc都將被初始化,所以您(程序員)不必擔心這一點。無論配置和過程是否關閉,它都會表現相同。

相關問題