Собственно вопрос из моей любимой тематики - производительности, есть файл part.php, что то типа: Код (PHP): <h2><?php echo $data['title']; ?></h2> <div><?php echo $data['content']; ?></div> <div><?php echo $data['author']; ?></div> и есть функция в другом файле: Код (PHP): function load_part($data) { include 'part.php'; } Допустим надо вывести 50 статей, т.е. функция load_part будет выполнятся 50 раз, скажите данный файлы будет 50 раз проверятся на ошибки (синтаксис), компилироваться (ну или интерпретироваться) и выводиться или при первом подключении он будет проверен, скомпилирован и все оставшиеся 49 раз он будет подключаться уже в скомпилированном виде? Как вообще ведет себя РНР в таком случае?
один раз читает-разбирает и потом выполняет байт код и в смешных конструкциях вида if(true){include 'true.php'; } else {include 'false.php'} подключение будет только при выполнении условия (в данном случае false.php будет подключен только если константа true будет иметь логически ложное значение. то есть в теории - никогда)
не совсем это понял, если будет не Код (Text): if(true){include 'true.php'; } а будет Код (Text): if($data['status'] === true){include 'true.php'; } и в половине случаев $data['status'] = true, а в другой = false, будет создано 2 файла с "байт кодом"? или каждый раз будет подключаться? (т.е. 50 подключений, 25 раз true.php и 25 false.php)
у тебя затруднение вызывает фраза "выполнение условия"? тебя в краску вгоняет словосочетание "один раз"? в чем проблема? приняв от веб-сервера задание на выполнение программы пхп машина создает виртуальную функцию мейн и её телом пытается сделать файл который просит заказчик (система, веб-сервер). считав файл с диска происходит его разбор и если синтаксических ошибок нет - идет попытка выполнения полученного байт кода. если попадается конструкция подключения файла - идет попытка разбора-исполнения целевого файла. если попадается условие и внутри него подключение - пхп машина будет дергать целевой файл только если условие в данный момент истинно. в твоем примере один корневой файл и два подключаемых по условию. всего три файла. максимум пхп машина будет парсить их... трижды. а исполнять полученный байт код можно столько сколько нужно в рамках одного выполнения. понятно? и теперь маленькая смешная штука под названием кэшэр байт-кода. один разобрав файл пхп машина запоминает его инструкции и при необходимости читает их из своего хранилища. имхо ты совершенно не тем занят.