Intereting Posts
Как отменить запрос ajax, который был запущен (на стороне сервера) Алгоритм поиска хороших, надежных игроков Как обновить этот XML-файл с помощью PHP XML-ридера и писателя? Структура Yii: использование данных из соответствующих моделей Active Record для поиска Подтвердите отправку на внешние ссылки в WordPress Поплавок неверен в MySQL PDO LIMIT и OFFSET Как удалить файлы или изображения из папки и базы данных в Laravel? jQuery-File-Upload blueimp PHP-MySQL-database-update data Как закодировать 2 размерного массива PHP в Javascript Array? Как определить последний идентификатор вставки в транзакции в Yii с помощью DAO? используя завиток, чтобы перейти с одной веб-страницы на другую, используя javascript Почему XHP может изменить синтаксис PHP и все же быть полностью реализована как расширение? Создание папки в хранилище Google Cloud с использованием php Как ограничить количество голосов в день по IP в голосовании Php + Mysql?

Время компиляции PHP и время выполнения. Понимание различий

Я часто слышу эти два термина и продолжаю думать

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

Я пробовал читать некоторые статьи, но это не помогло.

Кто-нибудь знает о простом объяснении? Чем они отличаются друг от друга?

Solutions Collecting From Web of "Время компиляции PHP и время выполнения. Понимание различий"

PHP делает два прохода (по умолчанию) в любое время, когда он запускает файл.

Пасс №1 анализирует файл и строит то, что называется операционным (или машинным) кодом. Это необработанный двоичный формат, который ваш компьютер будет запускать, и он не читается человеком. На других языках (например, на C ++ и т. Д.) Это называется компиляцией. Вы можете кэшировать этот шаг с помощью различных систем, таких как Opcache , что экономит ваши затраты на сбор данных каждый раз.

Синтаксические ошибки исходят из этой части выполнения.

Передача № 2 выполняет рабочий код из Паса №1. Это то, что обычно называют «временем выполнения», потому что ваш компьютер фактически выполняет инструкции.

Исходные ошибки (например, исчерпывающая память, ненормальное завершение и т. Д.) Исходят из этого уровня. Однако они значительно реже, чем синтаксические ошибки.

Файлы PHP выполняются в два этапа.

Сначала обрабатываются файлы PHP. На данный момент данные, поступающие из веб-браузера (или из любого другого источника), совершенно неактуальны. Все это делает разрыв файла PHP в его составные части и построение структуры кода.

Затем код выполняется с данными, которые вы поставляете.

Это разделение делает код намного быстрее. Это особенно актуально, если у вас есть кэши кода операций, такие как APC или OPcache, потому что первый шаг можно пропустить в следующих случаях, потому что структура кода точно такая же.

Время, когда вы столкнетесь с разницей, в основном связано с ошибками. Например, этот код вызовет ошибку на этапе компиляции:

 function class() { // some code } 

Это невозможно, потому что class является зарезервированным словом. PHP может выбрать это во время компиляции кода: он всегда будет терпеть неудачу. Он никогда не сможет работать.

Однако этот код может вызвать ошибку во время выполнения:

 echo $_GET['nonExistingKey']; 

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