2010-04-27 2 views
34

Я просто подумал про себя: «Как именно выполняется скрипт PHP?» Я думал, что сначала анализируется синтаксическая ошибка и т. Д., А затем интерпретируется и выполняется.Как именно выполняется скрипт PHP?

Однако, я не знаю почему Я верю, что это правильно. Возможно, я ошибаюсь.

Итак, как точно интерпретируется и выполняется PHP-файл? На каких этапах это связано? Как включенные файлы вписываются в разбор сценария?

Это только, чтобы помочь мне обвести вокруг себя. Я заинтересован и не могу найти хороший ответ с Google.

+0

Это? https://stackoverflow.com/a/46507205/1429432 –

ответ

15

В принципе, каждый раз, когда PHP скрипт загружен, он проходит в два этапа:

  • Исходный PHP код разобранные и преобразуется в то, что называется опкоды
    • Вид эквивалента байт-кода Java-
    • Если вы хотите увидеть, как это должно выглядеть, вы можете использовать VLD extension
  • Затем те опкод выполнены

Эти слайды из Sebastian Bergmann, на SlideShare, может помочь вам понять, что процесс немного лучше: PHP Compiler Internals

14

PHP является компилируемый язык, так как PHP 4.0

Идея о том, что это компилятор, кажется, тема, которая вызывает большую путаницу. Некоторые люди предполагают, что компилятор - это программа, которая преобразует исходный код на одном языке в исполняемую программу. Определение того, что является компилятором, на самом деле шире.

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

PHP стал скомпилированным языком в 2000 году, когда PHP 4 был выпущен в первый раз. До версии 3 исходный код PHP анализировался и сразу выполнялся интерпретатором PHP.

PHP 4 представил двигатель Zend. Этот механизм разбивает обработку PHP-кода на несколько этапов. Первая фаза анализирует исходный код PHP и генерирует двоичное представление кода PHP, известного как коды кода Zend. Коды операций - это команды инструкций, аналогичные байт-кодам Java. Эти коды операций хранятся в памяти. Второй этап обработки движка Zend состоит в выполнении сгенерированных кодов операций.

Форма больше информации перейти к http://www.phpclasses.org/blog/post/117-PHP-compiler-performance.html

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