2013-08-01 2 views
0

У меня есть приложение PHP, которое работает примерно за 2-3 минуты до того, как оно вернет что-то в браузер (некоторые средства обработки базы данных).Как скрипты PHP буферируются (?) На сервере?

Я хочу знать, если я могу изменить файл php вместе с ним во время работы скрипта. Я предполагаю, что в Apache/PHP есть буфер.

У меня есть ситуации, как это:

// This is index.php 

include "DatabaseController.php"; // class inside, I create instance at start 
include "ImagesController.php"; // class inside, I create instance at start 
include "helpers.php"; // there are just functions, no classes 

$db = new Database(); 
$img = new Images(); 

// for loop doing job here (2-3 minutes) 

// end 

Что произойдет, когда я заменить файл «DatabaseController.php» в то время как скрипт работает?

Я попытался протестировать его, и похоже, что «рабочая часть» по-прежнему использует старую версию DatabaseController при замене.

Но ... что произойдет, когда я заменю файл «helpers.php»? Он содержит только функции без классов, которые могут быть созданы в начале скрипта.

Как эта буферизация работает вообще?

+0

Ничего не произойдет, если вы измените файл во время его выполнения ... –

+0

Вы имеете в виду, что все включенные файлы тоже буферизуются? – Kamil

+1

Если они уже включены, их поведение не изменится (изменится на код операции). Если ваш скрипт начинается, _then_ вы меняете файл, и только _then_ 'include' происходит, он, конечно, увидит новый файл. – Wrikken

ответ

1

Его не буферизуют. Вы должны прочитать на Compilers. Таким образом, код, который вы пишете, сначала необходимо скомпилировать, прежде чем он сможет быть выполнен. Изменения, внесенные в исходный код после его компиляции, не будут действовать до следующего запроса, когда он будет повторно скомпилирован.

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