2012-03-03 2 views
2

Я запускал скрипт в своем браузере, который вставлял около 100000 записей в базу данных. По какой-то причине я удалил файл, в котором я написал скрипт, но для меня было мало удивительно, что скрипты продолжают вставлять записи в базу данных, даже если сценарий не существует. Почему это?Почему скрипты продолжают работать, даже если файл не существует?

+4

Его кешируется в памяти. – DejanLekic

ответ

2

Когда сделан запрос на веб-сервере:

  • Файл PHP загружается в память, он компилируется и работает.

  • Поскольку файл находится в памяти, любые изменения в файле на диске не применимы к запущенному файлу.

Если это ударяет другой вопрос Вам, как к «Почему, черт возьми, она загружается в память ?? Почему не может она быть выполнена с диска непосредственно?»:

  • Память здесь - это в основном оперативная память, которая быстрее выполняет чтение/запись, что является необходимостью конкурировать с производительностью процессоров.

  • HardDisk - это медленная память и, следовательно, доступ к ней, сделает ваши программы очень медленными для выполнения.

Чтобы соответствовать скорости процессоров, приходит потребность в исполняемый файл должен быть загружен из медленной памяти (часто винчестерах) к более быстрой памяти (часто Ram, или кэш процессора иногда).

И поэтому причина и ответ, почему ваш файл на диске не находится в файле синхронизации в памяти.

Также, пожалуйста, будьте уверены, что это будет работать в следующем запросе!

Но если вы все же хотите сделать это немедленно, вы можете рассмотреть возможность остановки/перезагрузки вашего сервера Apache/IIS (независимо от того, какой из них применимо), так как это немедленно уничтожит процесс.

0

@Umair, как только вы запустите сценарий, затем попросите перейти на сервер и он будет работать на сервере до завершения процесса. поэтому неважно, доступен ли файл или нет, потому что это старый запрос, который находится в процессе, поэтому это происходит.

4

Процесс выполняет в памяти не с диска.

Если вы хотите остановить запущенный скрипт, вам необходимо перезагрузить веб-сервер или убить процесс php. В зависимости от того, запущен ли он из командной строки или нет.

Смежные вопросы