Как работает php
PHP (рекурсивный акроним словосочетания PHP: Hypertext Preprocessor ) — это распространённый язык программирования общего назначения с открытым исходным кодом. PHP специально сконструирован для веб-разработок и его код может внедряться непосредственно в HTML.
Простой ответ, но что он может означать? Вот пример кода:
Пример #1 Пример программирования на PHP
Вместо рутинного вывода HTML-кода командами языка (как это происходит, например, в Perl или C), скрипт PHP содержит HTML с встроенным кодом (в нашем случае, это вывод текста «Привет, я — скрипт PHP!»). Код PHP отделяется специальными начальным и конечным тегами , которые позволяют «переключаться» в «PHP-режим» и выходить из него.
PHP отличается от JavaScript тем, что PHP-скрипты выполняются на сервере и генерируют HTML, который посылается клиенту. Если бы у вас на сервере был размещён скрипт, подобный вышеприведённому, клиент получил бы только результат его выполнения, но не смог бы выяснить, какой именно код его произвёл. Вы даже можете настроить свой сервер таким образом, чтобы обычные HTML-файлы обрабатывались процессором PHP, так что клиенты даже не смогут узнать, получают ли они обычный HTML-файл или результат выполнения скрипта.
PHP крайне прост для освоения, но вместе с тем способен удовлетворить запросы профессиональных программистов. Не пугайтесь длинного списка возможностей PHP. Вы можете быстро начать, и уже в течение нескольких часов сможете создавать простые PHP-скрипты.
Хотя PHP, главным образом, предназначен для работы в среде веб-серверов, область его применения не ограничивается только этим. Читайте дальше и не пропустите главу Возможности PHP либо, начните непосредственно с Вводного руководства, если вас интересует исключительно веб-программирование.
User Contributed Notes
There are no user contributed notes for this page.
- Copyright © 2001-2023 The PHP Group
- My PHP.net
- Contact
- Other PHP.net sites
- Privacy policy
How the php engine works internally
PHP as an engine parses files into tokens, builds an Abstract Syntax Tree (AST) and later on transform this tree into Opcodes. Such Opcodes can be cached for performance.
On web servers PHP is normally used with PHP-FPM, which brings amazing scaling capabilities to it. PHP 7.4 also brought a preloading feature, that is capable of parsing php files into Opcodes while FPM service is being lifted.
If you want an in-depth explanation about how the Zend VM behaves, read this post about PHP 8’s JIT. It has an in-depth explanation on how the PHP works internally with and without the Just In Time compiler.
So. what is PHP?
Makes me very happy to see how modern PHP development requires less and less knowledge to build great products. This is really incredible.
With little research we come to the information that PHP first became public about 27 years ago.
The way it began is extremelly important to understand why and how it got so popular. It also makes much easier to understand most of its architectural traits and decisions.
PHP was born as a templating engine. It was basically a set of CGI programs to enable web pages development with dynamic values.
Yes, it was supposed to mix HTML and PHP code. But in 1995, this was a bomb!
As a scripting language, php runs code sequentially from top to bottom and every new execution is 100% fresh. No memory or context sharing.
When it comes to web pages, though, this might change a bit. Given PHP can run both as a CGI or module in your http server. Let’s give it a closer look.
How does PHP work with HTTP Servers?
In general HTTP servers have a very clear responsibility: provide hypermedia content using the HTTP Protocol. This means that http servers would receive a request, fetch a string content from somewhere, and respond with this string based on the HTTP Protocol.
PHP came to make this hypermedia content dynamic, allowing developers to provide more than simple, static .html files.
As a scripting language, on a scripting context, PHP isolates every execution. Meaning that it doesn’t share memory or other resources among executions.
On the web context we have two different ways to execute php code. Both presenting us with their pros and cons.
One can attach PHP to http servers using a CGI-like connection OR as a module to http the server. The main difference between both is that http modules share resources with the HTTP server while as a CGI, php has a fresh execution on every request.
Using it as a module used to be very popular back in the days, as the communication between the http server and code execution has less friction. Meanwhile the CGI mode would, for example, rely on network communication between http server and code execution.
This used to make CGI a bottleneck for PHP set ups. Nowadays, this is exactly how PHP shines!
With PHP-FPM a web server like nginx or Apache can easily execute php code as if it was a CLI script. Where every request is 100% isolated from each other.
This also means that the HTTP Server can scale independently from the PHP code executor. With our current techonology, this is amazing to enable vertical scaling.
Using PHP with CGI enables you to quickly update your application without taking down the whole http server. With current load balancers trend this is not that critical, but worth mentioning.
Another great benefit on using PHP-FPM is that whenever a php script crashes, only that request context is doomed. The rest of the application keeps running normally, as no resources are shared.
So if we just ignore the idea that we can use php within a module connected to http servers, the way php works (with FPM) is basically: HTTP Server ⇨ PHP-FPM (Server) ⇨ PHP.
That’s why we often state that PHP is extremelly scalable by nature.
But PHP is still a scripting language. And as in the CGI context it has a fresh execution every single request, it is also clear that PHP’s most scalable trait is also one of its most relevant performance bottlenecks.
How does PHP scripting work?
PHP language is written in C and the way it works is actually quite cool.
The php interpreter would read text files containing php code, analyse its syntax, transform everything it understands as php code into opcodes and later on execute this opcode list.
In simple terms, php will: parse, compile and execute.
Every single time (we’ll come back to this point later).
So whenever you’re attempting to execute a php script, you’ll face different things in different moments:
Syntatic errors and language checks happen during the parsing and compiling phase. Logical errors (like exceptions) occur during execution phase only.
The way PHP currently does this is by using an Abstract Syntatic Tree to figure out what the things inside a php file actually mean.
This syntatic tree maps language constructs to compiling instructions, that when compiled turn into Zend VM opcodes. Such opcodes are then to be interpreted by the Zend VM.
So, if you really think about, the most relevant step for PHP execution is actually letting Zend VM execute opcodes. This is what really produces our desired result.
In the end of the day having a fresh execution on every request doesn’t seem that smart if we have to compile php syntax into opcode every single time.
That’s why OPcache exists. There are simply no solutions without problems.
With OPcache php can benefit from a shared memory space: read/store already parsed script opcodes and boost future executions.
The first time a request hits index.php , for example, php parses, compiles and executes it. Second time a request hits index.php , php will simply fetch from opcache and execute it right away.
This is about to change, though. Since PHP 7.4 a opcache preloader got added to php. This functionality allows a set of php files to be preloaded during a sever start-up process. This way, the first time a request hits index.php , php will just fetch it from opcache and execute it. No extra parsing needed.
Is this information even useful?
I have this feeling that php engineers (as well as python engineers) usually hold great knowledge on how back-end components connect to each other, given our languages usually don’t provide much magic or vendor black boxed packages.
I also feel like this is changing over time, as Open Source software proved to be more than just a Hype, but a great economical model. More languages are requiring engineers to understand how things come together and becoming more vendor agnostic.
We are not quite there yet, and mastering PHP’s ecosystem is a must for properly investing efforts on performance and security. Knowing where and when things happen will support you optimizing how they should happen.
I hope this text helped you to better understand how PHP’s engine actually works behind the scenes, the tooling it uses and important keywords you’ll probably face at some point.
If you have questions I didn’t answer here or believe I made any mistake within this text, please feel free to reach me and, if I feel it fits here, I’ll keep this post updated so we can all learn together.
Keep reading
Mastering binary and bitwise in PHP
I recently caught myself working on different projects that required me to rely heavily on bitwise operations in PHP. From reading binary files to emulating processors, this is a very useful knowledge to have and a very cool one too. 2021-01-07
PHP 8.0 released: it looks awesome!
PHP 8.0 brings many innovations, among them amazing syntax additions, API upgrades,fundamental changes to its core and, of course, many bug fixes. Here I want to outline some of the main changes to the language! 2020-11-26
Everything you need (and don’t need) to know about PHP’s type system
This is the absolute best guide you’ll find in the internet about how php handles typing internally and in userland. 2020-07-25
Как работает PHP
Приветствую! В этом уроке мы разберём, что же из себя представляет PHP, как он работает и для чего он предназначен.
Начнём с того, что программа, написанная на языке PHP, во время своей работы представляет из себя не то стандартное окошко, которое мы привыкли видеть. В абсолютном большинстве случаев эта программа работает на сервере «невидимо». То есть мы не можем управлять ею во время выполнения, но на самом деле нам это и не нужно 🙂
Дело в том, что эта программа должна принимать запрос от пользователя, сделать какие-то действия, отдать пользователю результат и после этого завершиться. И чем быстрее она отработает, тем лучше. В этом главное отличие программ на PHP от «стандартных» программ, которые постоянно висят в памяти, ждут действий пользователя и реагируют на них в режиме реального времени.
PHP не работает сам по себе. Для работы с пользователем он должен быть настроен в связке с веб-сервером, например, Nginx или Apache. Если по-простому, то пользователь отправляет запрос к веб-серверу по протоколу HTTP. Веб-сервер определяет, к какому типу файла было совершено обращение, и, если это файл с расширением .php, то веб-сервер передаёт запрос на обработку интерпретатором языка PHP, скрипт считывается, преобразуется в байт-код, выполняется и возвращает ответ веб-серверу. Веб-сервер передаёт сформированный результат пользователю. Этот результат, как правило, представляет собой динамически сгенерированную HTML-страничку.
- Курс HTML для начинающих
- Курс PHP для начинающих
- Курс MySQL для начинающих
- Курс ООП в PHP

Этот процесс можно значительно ускорить, подключив расширение-акселератор. Оно занимается тем, что кэширует получившийся байт-код, и пока файл остаётся неизменным сразу начинается его выполнение. Начиная с версии PHP 5.6 акселератор OPcache включён в дистрибутив по умолчанию.
Здесь стоит упомянуть, почему PHP так хорош для веб-разработки — он по умолчанию содержит в себе огромное число инструментов для работы с запросами, средства для работы с огромным количеством баз данных, работу с файлами. Всё это активно используется современными сайтами.
- Тест на знание основ HTML
- Тест на знание основ PHP
- Тест на знание ООП в PHP
Наверное, Вы уже успели подумать о том, что для того чтобы запустить программу на PHP, Вам придётся повозиться с настройкой, ведь нужно связать его с веб-сервером. К счастью, есть готовые решения, позволяющие запустить веб-сервер с PHP за несколько минут. А современные хостинги позволяют выкладывать и запускать проекты на PHP, вообще не задумываясь, как там всё устроено. И это хорошо, ведь Вы — программист, а не системный администратор. Прошу Вас это принять, это позволит расти как программисту гораздо быстрее. Разумеется, со временем Вам придётся вникнуть в эту область, но прошу Вас не делать этого сейчас — посвятите себя программированию.
Готовое решение в качестве сервера, которое я всем советую использовать, называется OpenServer. О том, как его установить и запустить, мы поговорим в следующем уроке.
PHP for dummies: как устроена экосистема языка и почему его стоит изучать в 2021 году
Каждый год ему предрекают скорую смерть и всё равно используют в коде 80% сайтов. Знакомимся с языком бэкенд-разработки PHP.


evgeniy kornilov / shutterstock

Антон Сёмин
Пишет об истории IT, разработке и советской кибернетике. Знает Python, JavaScript и немного C++, но предпочитает писать на русском.
PHP — скриптовый язык общего назначения, который чаще всего используется в веб-разработке. Название языка — рекурсивный акроним PHP: Hypertext Preprocessor.
По данным w3techs.com (на октябрь 2021 года), код на PHP есть на 78% всех сайтов в интернете. У языка мощное профессиональное сообщество, которое ежегодно устраивает конференции и митапы по всему миру. Но вот парадокс: больше, чем PHP, разработчики ненавидят разве что только JavaScript.
Разберёмся, за что любят и ненавидят один из самых влиятельных языков программирования, а также расскажем, какие карьерные перспективы у PHP-разработчика в 2021 году.
Немного истории
В 1994 году программист Расмус Лердорф написал набор CGI-скриптов на языке С, чтобы отслеживать посещения своего резюме в интернете. Он дал им скромное название PHP/FI (personal homepage / form interpreter) — тогда они больше походили на фреймворк для работы с веб-формами, а не на полноценный язык.

В 1995 году Расмус выложил PHP/FI вместе с исходниками в открытый доступ. Синтаксис фреймворка напоминал С и Perl, поэтому разработчики, знакомые с языками, быстро его освоили и полюбили.
История современного PHP начинается в 1997 году. Тогда студенты Энди Гутманс и Зеев Сураски из Тель-Авива, которые использовали PHP/FI в своём университетском проекте, стали работать вместе с Расмусом над следующей версией PHP. В итоге появился совершенно новый язык — PHP 3.0 с поддержкой множества баз данных, API, ООП и расширяемым ядром. Кроме того, сторонние разработчики теперь могли писать модули для языка, поэтому его фанатская база стала расти ещё быстрее.
Для PHP 4.0 Гутманс и Сураски в 1999 году написали движок Zend Engine. Производительность скриптов выросла, появились более безопасные способы обработки пользовательских данных и поддержка новых серверов. В том же 1999 году Гутманс и Сураски основали компанию Zend Technologies, которая по сей день занимается поддержкой ядра PHP, релизит новые версии и сертифицирует разработчиков.
С того момента вышло ещё три версии языка:
- В PHP 5 появились новые инструменты ООП и поддержка XML.
- В PHP 7 заметно выросла производительность ядра. По данным Zend, скрипты на PHP 7 работают в два раза быстрее, чем скрипты на PHP 5.6.
- В PHP 8, которая вышла в 2020 году, появилась JIT-компиляция, match (как case, только лаконичнее), null-безопасный оператор и другие новые операторы.
А вот версии PHP 6 никогда не было: в 2010 году создатели отменили релиз и залили все наработки в версию 5.4.
Где и как используют PHP
PHP — серверный язык, поэтому результатом выполнения его скриптов могут пользоваться разные системы. Он может как генерировать HTML-код, так и отдавать данные мобильным приложениям по API.
Например, когда вы открываете сайт и путешествуете по страницам, ваш браузер посылает сигналы на сервер. Браузер не знает, на каком языке написаны серверные приложения. Он лишь получает в ответ данные и показывает их в виде страниц. Любая другая система может обратиться к серверу и получить результат. Конечно, если на нём есть приложение, которое может отдавать данные в публичный канал.
Вот что обычно пишут на PHP:
- бэкенд веб-сайтов;
- бэкенд веб-приложений;
- микросервисы;
- внутренние веб-системы компаний.
PHP используют и в простых блогах, и в сложных распределённых системах, когда данные проходят через десятки стадий обработки. На нём можно писать большие сайты и одиночные страницы с небольшой базой данных.
Серверная часть многих крупных проектов написана на PHP или содержит скрипты на нём:
- Wikipedia,
- Facebook*,
- «ВКонтакте»,
- Avito,
- Badoo,
- «Банки.ру».
PHP-приложения легко разворачиваются на большинстве серверов, а информации об их администрировании и отладке полно в интернете. PHP незаменим, когда нужно быстро и без лишних усилий собрать веб-приложение. При этом, если хорошо продумать архитектуру, проект на PHP будет работать как часы, а дополнительные функции — дописываться без особых проблем.
Чем хорош PHP
Почти 80% всех сайтов в интернете — нехилый показатель для языка, который иногда называют странным. Очевидно, веб-разработчикам есть за что ценить PHP.
Нестрогая типизация
На самом деле это и преимущество, и недостаток.
Представим каталог товаров на сайте, где для каждой позиции выводится цена. В PHP разработчику не нужно помнить, какой тип у цены: строковый или числовой. Мы просто выводим её, а об остальном заботится интерпретатор. В других языках нам пришлось бы приводить значения к строковому типу, прежде чем их вывести.
А вот при разработке бизнес-логики, наоборот, полезна строгая типизация. С её помощью можно создавать структурированные и надёжные приложения. По умолчанию PHP не покажет ошибку, если мы случайно умножим цену товара на название скидки, а не на процент. Правда, результат, скорее всего, нас удивит. Поэтому в современных версиях языка можно строго типизировать входные и выходные параметры функций и методов.
Для проекта на PHP легко найти хостинг
Писать код на домашнем компьютере — здорово, но если вы захотите показать проект миру, то нужно будет найти хостинг. Больше 90% компаний предлагают окружение, совместимое с PHP, поэтому выбор сервисов большой, а их средняя стоимость — низкая. А вот хостинг для Java или C# обойдётся примерно в 3–4 раза дороже, да и времени на поиск подходящего сервиса уйдёт куда больше.
PHP — «дружелюбный» язык
Для PHP пишут адаптеры — специальные библиотеки, через которые можно работать с внешними инструментами и технологиями. Поэтому PHP дружит практически с любыми базами данных, очередями и системами кэширования. Например, есть библиотеки для баз данных MySQL, Postgres и более экзотических Aerospike и Tarantool.
Другие преимущества PHP:
Простой синтаксис, который так же просто освоить. Просто сравните, сколько нужно написать кода, чтобы вывести «Hello World!» на PHP и на другом языке бэкенд-разработки — C#.



На рынке не хватает сильных специалистов, поэтому через пару лет работы с PHP ваша ценность может вырасти в разы. Бизнесу нужны эксперты, которые умеют создавать сложные проекты и работать с десятками разных систем. Тем, кто на PHP «съел слона», рынок предлагает зарплаты в 3–4 раза больше, чем новичкам.



В целом уровень зарплаты зависит от скиллов разработчика и региона, в котором находится компания. Нижняя планка для джуна — 50 тысяч рублей. Но даже при минимальной зарплате от программиста требуется хорошо знать нюансы языка и уметь написать на нём скрипт без фреймворка. Разработчик с опытом от одного года может претендовать на зарплату в 100 тысяч рублей, а более опытные и владеющие смежными веб-технологиями — на 200 тысяч и более.
- На PHP пишут бэкенд сайтов и приложений, микросервисы и внутренние веб-системы компаний. Почти 80% сайтов как минимум содержат код на этом языке, поэтому у PHP-разработчиков много работы.
- PHP работает с большинством внешних систем и библиотек, для него легко подобрать хостинг, он прост в освоении и запускается почти на всех платформах.
- Недостаток PHP в том, что для запуска кода процессору приходится выполнять цепочку операций: проанализировать код —> превратить его в команды —> выполнить. Каждая операция занимает время и отнимает ресурсы у процессора. В современных версиях языка эти проблемы научились обходить.
- В энтерпрайзе редко пишут на чистом PHP. У языка более 20 фреймворков, которые позволяют быстрее создавать приложения и сайты на основе готового каркаса.
PHP можно легко освоить на курсе «Профессия Fullstack-разработчик на PHP» в Skillbox. Чтобы учиться, не нужно специальных знаний — вы начнёте с основ, а к концу обучения создадите несколько полноценных проектов для портфолио.
CGI (Common Gateway Interface) — стандарт интерфейса, по которому внешняя программа взаимодействует с сервером.
