Как работает PHP и какова его архитектура?

Ребята недавно я решил вернуться к PHP и сделать несколько более сложных вещей, чем простая страница входа в систему. В течение 3 лет я программировал Java/JavaEE и хорошо разбираюсь в архитектуре приложений Java. В принципе, виртуальная машина (простой процесс ОС), которая выполняет скомпилированный код, называемый байтовым кодом. простой веб-сервер Java - это в основном приложение Java, которое прослушивает предоставленный TCP-порт для запросов Http и, соответственно, отвечает, что это сложнее, но это его первоначальная работа.

Теперь, как насчет PHP? Как это работает? Что, в двух словах, это его архитектура.

Я искал этот вопрос, но в 90% статьи объясняют, как реализовать и построить веб-приложение с PHP, которое не то, что я ищу.

Ответ 1

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

Этот исполняемый файл поддерживает API по умолчанию, который может вызвать код PHP пользовательского поля, и можно добавить расширения, чтобы предоставить больше API. Эти расширения обычно пишутся на C и скомпилированы вместе с исполняемым файлом PHP во время установки. Некоторые расширения могут быть добавлены только путем перекомпиляции PHP с дополнительными флагами, другие могут быть скомпилированы против установки PHP и активированы через файл конфигурации после факта. PHP предлагает проекты сторон PEAR и PECL как попытку стандартизировать и упростить такие установки после факта. Userland PHP-код часто также включает в себя дополнительные сторонние библиотеки, просто написанные в PHP-коде. Преимуществом C-расширений является их скорость выполнения и доступ к системному доступу низкого уровня, преимущество библиотек пользовательских кодов - их тривиальное включение. Если вы управляете своей собственной установкой PHP, она часто достаточно проста, чтобы добавлять новые расширения PHP; однако на очень популярной модели с общим хостом часто возникает напряжение между тем, что хост хочет установить и что нужно разработчику.

На практике веб-служба, написанная на PHP, работает на стороннем веб-сервере, очень часто Apache, который обрабатывает любые входящие запросы и вызывает интерпретатор PHP с данным запрошенным файлом исходного кода PHP в качестве аргумента, а затем предоставляет любой вывод этого перейдите к HTTP-клиенту. Это также означает, что постоянный PHP-процесс не работает постоянно с постоянным состоянием, как это обычно бывает в Java, но каждый запрос обрабатывается путем запуска, а затем сбрасывания нового экземпляра PHP.

Хотя Java просто сохраняет постоянные данные в памяти, постоянство данных между запросами в PHP обрабатывается с помощью ряда методов, таких как memcache, сеансы, базы данных, файлы и т.д.; в зависимости от конкретных потребностей ситуации. У PHP есть аддоны кэша кода операции, такая работа как байт-код Java, так что PHP не должен повторять один и тот же процесс синтаксического анализа и компиляции каждый раз, когда он выполняет один и тот же файл.

Имейте в виду, что вполне возможно написать постоянную PHP-программу, которая работает так же, как Java, это просто не PHP по умолчанию modus operandi. Лично я являюсь поклонником написания рабочих для конкретных задач в Gearman или ZMQ, которые работают настойчиво и имеют некоторые эфемерные сценарии, запущенные на веб-сервере, как "frontend", которые делегируют работу этим работникам по мере необходимости.

Если это звучит как типичное приложение для PHP, это гораздо больше склеенного накопления нескольких разрозненных компонентов, вы были бы правы. Java довольно автономна, за исключением внешних продуктов, таких как серверы РСУБД. PHP, с другой стороны, часто склонен полагаться на кучу сторонних продуктов; который может работать в своих интересах в том смысле, что вы можете использовать лучшие в своем классе продукты для конкретных задач, но также требует больших затрат на работу с различными системами.

Ответ 2

Вот как работает PHP:

(один из лучших в интернете)

PHP internals

Ответ 3

В общих чертах, PHP как движок интерпретирует содержимое файлов PHP (обычно *.php, хотя иногда используются альтернативные расширения) в абстрактное синтаксическое дерево. Затем механизм PHP обрабатывает переведенный AST и затем возвращает результат, учитывая любые входные данные и обработку, которые требуются.

Ниже изображение будет отображать больше информации

enter image description here

Источник: freecodecamp.org