Как именно выполняется скрипт PHP? - PullRequest
35 голосов
/ 27 апреля 2010

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

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

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

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

Ответы [ 3 ]

18 голосов
/ 03 сентября 2013

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

16 голосов
/ 27 апреля 2010

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

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

Эти слайды от Себастьяна Бергманна на слайд-шоу могут помочь вам лучше понять этот процесс: Внутренние компоненты компилятора PHP

1 голос
/ 27 апреля 2010

Вот также список всех токенов парсера .

...