2012-03-03 3 views
2

データベースに100000レコードを挿入するスクリプトをブラウザで実行していました。何らかの理由で私はスクリプトを書いたファイルを削除しましたが、スクリプトが存在しない場合でもスクリプトがデータベースにレコードを挿入し続けるのは驚くことではありませんでした。何故ですか?ファイルが存在しないにもかかわらずスクリプトが実行され続けるのはなぜですか?

+4

メモリにキャッシュされます。 – DejanLekic

答えて

2

要求は、ウェブサーバーに構成されています

  • PHPファイルがメモリにロードされ、それがコンパイルされ、実行されています。

  • ファイルがメモリ上にあるため、ディスク上のファイルの変更は実行ファイルには適用されません。

するようそれは、あなたに別の質問を打つ場合は、「それは直接ディスクから実行することはできませんなぜそれを取得地獄??メモリにロードされたのはなぜ?」:

  • ここのメモリは主にRAMであり、プロセッサの速度と競合する必要がある読み書きを行う方が高速です。

  • HardDiskは低速なメモリであるため、そこからアクセスするとプログラムの実行が非常に遅くなります。プロセッサのスピードに合わせて

、より高速なメモリ(多くの場合、ラム、または時々プロセッサのキャッシュ)に低速メモリ(多くの場合のハードディスク)からロードされる実行可能ファイルが必要とされています。

したがって、ディスク上のファイルがメモリ内の同期ファイルに存在しない理由とその理由。

また、次のリクエストでうまくいきますのでご安心ください!

しかし、それでもすぐにやりたいのであれば、すぐにプロセスを終了させるため、Apache/IISサーバーの停止/再起動を検討することができます。

0

@Umair一度スクリプトを実行すると、要求はサーバーに送られ、プロセスが完了するまでサーバー上で実行されます。したがって、ファイルが利用可能であるかどうかは問題ではありません。なぜなら、これが起こっている理由である処理中の古い要求であるからです。

4

このプロセスは、がディスクからではなく、メモリ内でを実行しています。

実行中のスクリプトを停止したい場合は、Webサーバーを再起動するか、PHPプロセスを終了する必要があります。コマンドラインから実行しているかどうかによって異なります。

関連する問題