2012-03-03 85 views
2

我在我的瀏覽器中運行一個腳本,在數據庫中插入一些100000條記錄。出於某種原因,我刪除了我編寫腳本的文件,但對於我而言,即使腳本不存在,腳本仍會將記錄插入數據庫中,這並不令人驚訝。這是爲什麼?即使文件不存在,爲什麼腳本仍在運行?

+4

它被緩存在內存中。 – DejanLekic 2012-03-03 11:10:54

回答

2

當一個請求到網絡服務器進行:

  • 的PHP文件加載到內存中,它被編譯並運行。

  • 由於文件在內存中,因此對磁盤上文件的任何更改都不適用於運行文件。

如果罷工在你另一個問題,爲「爲什麼它被裝載到它爲什麼不能從磁盤直接執行內存??地獄?」:

  • 這裏的內存大部分是RAM,它在讀寫時速度更快,這是與處理器速度競爭的需要。

  • HardDisk是一個慢速內存,因此,從它進行訪問會讓您的程序執行速度非常慢。

,以配合處理器的速度,總會有這種需要一個可執行文件從慢速內存(通常硬碟)到更快的內存(通常RAM或處理器的高速緩存有時)加載。

因此,原因和答案,至於爲什麼你的磁盤上的文件沒有在內存中同步文件。

也請放心,這將在您的下一個請求中正常工作!

但是,如果您仍想立即執行此操作,則可以考慮停止/重新啓動Apache/IIS(無論哪個適用的服務器),因爲這會立即終止進程。

0

@Umair一旦你運行腳本,然後請求去服務器,它會運行在服務器上,直到進程完成。所以無論文件是否可用都無關緊要,因爲這是正在處理的舊請求,這就是爲什麼會發生這種情況。

4

該進程正在執行內存中的而非磁盤。

如果你想停止正在運行的腳本,你將需要重新啓動你的web服務器,或者終止php進程。取決於它是否從命令行運行。

相關問題