За последние 24 часа нас посетили 17709 программистов и 1659 роботов. Сейчас ищут 887 программистов ...

Вывод данных по шаблону, подключение файла

Тема в разделе "PHP для новичков", создана пользователем VLK, 18 апр 2015.

  1. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    Собственно вопрос из моей любимой тематики - производительности, есть файл part.php, что то типа:
    Код (PHP):
    1. <h2><?php echo $data['title']; ?></h2>
    2. <div><?php echo $data['content']; ?></div>
    3. <div><?php echo $data['author']; ?></div>
    и есть функция в другом файле:
    Код (PHP):
    1. function load_part($data)
    2. {
    3.     include 'part.php';
    4. } 
    Допустим надо вывести 50 статей, т.е. функция load_part будет выполнятся 50 раз, скажите данный файлы будет 50 раз проверятся на ошибки (синтаксис), компилироваться (ну или интерпретироваться) и выводиться или при первом подключении он будет проверен, скомпилирован и все оставшиеся 49 раз он будет подключаться уже в скомпилированном виде?
    Как вообще ведет себя РНР в таком случае?
     
  2. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    один раз читает-разбирает и потом выполняет байт код

    и в смешных конструкциях вида if(true){include 'true.php'; } else {include 'false.php'} подключение будет только при выполнении условия (в данном случае false.php будет подключен только если константа true будет иметь логически ложное значение. то есть в теории - никогда)
     
  3. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    не совсем это понял, если будет не
    Код (Text):
    1. if(true){include 'true.php'; }
    а будет
    Код (Text):
    1. if($data['status'] === true){include 'true.php'; }
    и в половине случаев $data['status'] = true, а в другой = false, будет создано 2 файла с "байт кодом"?
    или каждый раз будет подключаться? (т.е. 50 подключений, 25 раз true.php и 25 false.php)
     
  4. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    у тебя затруднение вызывает фраза "выполнение условия"? тебя в краску вгоняет словосочетание "один раз"? в чем проблема?
    приняв от веб-сервера задание на выполнение программы пхп машина создает виртуальную функцию мейн и её телом пытается сделать файл который просит заказчик (система, веб-сервер). считав файл с диска происходит его разбор и если синтаксических ошибок нет - идет попытка выполнения полученного байт кода. если попадается конструкция подключения файла - идет попытка разбора-исполнения целевого файла. если попадается условие и внутри него подключение - пхп машина будет дергать целевой файл только если условие в данный момент истинно. в твоем примере один корневой файл и два подключаемых по условию. всего три файла. максимум пхп машина будет парсить их... трижды. а исполнять полученный байт код можно столько сколько нужно в рамках одного выполнения. понятно?

    и теперь маленькая смешная штука под названием кэшэр байт-кода. один разобрав файл пхп машина запоминает его инструкции и при необходимости читает их из своего хранилища.

    имхо ты совершенно не тем занят.
     
  5. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    Вот теперь понятно.