В PHP, что подразумевается под компиляцией и временем выполнения?

PHP является интерпретированным языком, а не компилируется. Тем не менее, я столкнулся с книгой, в которой упоминается, что происходит в PHP во время компиляции, и в руководстве по PHP говорится, что объявление const происходит во время компиляции . Как термин compile-time используется в отношении PHP, поскольку PHP не скомпилирован?

Если это просто означает «когда скрипт читается и переводится в подпрограммы интерпретаторов», то в чем разница между терминами compile-time и run-time?

Исходный код PHP проходит через шаг, где он компилируется в PHP Opcode. Эта идея была реализована на различных платформах, в первую очередь с Java. Теоретически, имея отдельную рабочую среду «виртуальной машины» для запуска Opcodes, разработчики языка могут отделять язык от проблем с переносимостью.

Вы можете найти список этих Opcodes в руководстве

В типичной среде PHP без кэширования кода операции шаг компиляции и шаг «run-time» неразличимы, однако, когда вы вводите «кеш ускорителя / opscode», такой как APC или продукт Zend Platform, вы можете видеть, что это отдельные этапы процесса.

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

Если вы сосредоточены на аспекте «времени выполнения» PHP, вы видите «интерпретируемый» характер PHP, так как он требует среды выполнения, по сравнению с компилируемым / связанным языком, например c / c ++, который работает как родная операционная система.

В случае PHP, php-программа – это собственная операционная система (или родная как модуль веб-сервера собственной ОС).

В отличие от того, как Java работает внутри «виртуальной машины Java» (JVM), скрипты PHP работают внутри PHP и, следовательно, не содержат особенностей того, как операции будут выполняться операционной системой.