2016-05-24 5 views
-3

私は次のスクリプトを記述する場合(PHPのではなく、単に任意のサーバーサイドの言語は本当に):実行中にサーバー側のコードを含むファイルが削除されるとどうなりますか?

<?php 
    while (true) 
    { 
     sleep(4) 
    } 
?> 

と私はそのようにのようなLinuxターミナルでファイルを実行します。php file.php

を質問:ファイル自体を削除するとどうなりますか?プロセスはRAMに最初に格納されていましたが、現在はfile.phpの存在または非存在にかかわらず実行されていましたか?プロセスが突然停止するか、まったく異なることが起こりますか?

+1

私は使用されているファイルを削除することはできないと思います。しかし、なぜそれを試してみませんか – Jens

+0

@Jens私は数週間で私のラップトップにランプスタック(XAMPP)をインストールするときにそれを試して計画しています。現在のところ、私は遊ぶサンドボックスを持っていません。バックエンドで何が起こっているのかを理解することは涼しいでしょう。これは質問の目的です。「起こるイベントの順序は何ですか?」テストを行った後でも、結果は起こっていることすべてを推測するのに十分であるとは思えません。 – Webeng

答えて

1

既に実行されている場合は、既にメモリに読み込まれて解析されてコンパイルされているため、メモリ内で実行されています。ファイルを削除しても変更されません。多くの人の意見に反して、PHPはコンパイルされた言語です...実行時にコンパイルされ、ネイティブマシンコードではなくバイトコードにコンパイルされます。それでも

0

nonthelessコンパイルされている私は、Windowsわからないけど、UNIXベースのシステムでは以下が適用されます。

を(PHPのような)プログラムがファイルを開いて実行することにより、例えば、ファイルディスクリプタ(/通訳を開いた場合内容)ファイルは、ファイル記述子が閉じられるまで存在し続けます。しかし、カーネルは、プログラムが削除された後に新しいファイル記述子を取得するのを防ぎ、最後の記述子が閉じられたときに "本当に"削除します。

PHPの場合、Markさんが答えてくれたようです。 PHPはファイル全体を一度に消費し、メモリから実行します。しかし、プロセスが読んでいる間にファイルが削除されても、上で述べたように、うまく動作します。詳細情報については

は、次のマニュアルページを参照してください:unlink(2)open(2)

関連する問題