Хочу научиться программировать на php. с чего начать?

Почему все ненавидят PHP

По ста­рой памя­ти, когда ужас­но­го кода было мно­го. Про­сто­та вхож­де­ния в этот язык при­ве­ла к тому, что невоз­мож­но было нор­маль­но под­дер­жи­вать сайт, напи­сан­ный кем-то на PHP. Этот язык поз­во­лял рань­ше (сей­час мень­ше, но тоже есть) мно­го воль­но­стей с типа­ми дан­ных, пере­мен­ны­ми, обра­ще­ни­я­ми к базе дан­ных, поэто­му разо­брать­ся было почти нереально.

Кро­ме это­го, рань­ше в PHP было мно­го уяз­ви­мо­стей, через кото­рые мож­но залезть в базы дан­ных поль­зо­ва­те­лей или что-то поло­мать на сай­те. В новых вер­си­ях боль­шин­ство дыр уже устра­ни­ли, но тогда это ста­ло реаль­ной проблемой.

Сме­шан­ный код. Писать в одном фай­ле на PHP и HTML мож­но, если у вас все­го одна фор­ма обрат­ной свя­зи. Но когда весь слож­ный код на PHP рас­пол­за­ет­ся по всей стра­ни­це, то это силь­но меша­ет разо­брать­ся, что же там про­ис­хо­дит на самом деле.

Любые пере­мен­ные в любом месте. Пона­до­би­лась новая пере­мен­ная? Объ­яви­те её на любом участ­ке кода и сра­зу бери­те в рабо­ту. Это удоб­но для пер­во­на­чаль­ной раз­ра­бот­ки, когда ты про­сто берёшь новую пере­мен­ную там, где она пона­до­би­лась, и дела­ешь с ней что хочешь. Но когда про­хо­дит вре­мя или кто-то дру­гой хочет разо­брать­ся в коде, то такой под­ход силь­но затруд­ня­ет работу.

Напри­мер, мож­но напи­сать так:

$a = 5+3;$b = «Строка»;… много строк кода …$a = 17 + $b;$b = 21;

Когда новый про­грам­мист захо­чет понять, за что отве­ча­ют пере­мен­ные а и b, он най­дёт место, где они объ­яв­ля­ют­ся, и посмот­рит, како­го они типа и для чего исполь­зо­ва­лись вна­ча­ле. Но раз­ра­бот­чик мог в про­цес­се пере­ду­мать и начать исполь­зо­вать эти пере­мен­ные для дру­гих целей с новы­ми типа­ми дан­ных. Что­бы это понять, нуж­но про­смот­реть весь код и разо­брать­ся в логи­ке, а это дол­го и трудно.

А ещё:

  • нет нор­маль­ной многопоточности;
  • мало фрейм­вор­ков;
  • стран­ная рабо­та с объ­ек­та­ми и классами;
  • нет кон­тро­ля и отлад­ки ошибок.

HipHop и прорыв в скорости

Facebook написан на PHP — проблему нужно было решать. Их программисты создали для пятой версии собственный интерпретатор языка. Они компилировали его изначально в промежуточные коды, а затем отправляли в обычный интерпретатор Zend Engine. Программисты Facebook ввели статическую типизацию и ускорили работу языка в два раза. Это стало настоящим прорывом. Транслятор назвали HHVM, или HPHP Compiler — «HipHop для языка PHP».

Но команда разработки PHP плотно занялась массивами. Итогом стала седьмая версия, которая работала быстрее HHVM. При этом статической типизации в PHP7 по-прежнему почти нет. Только в параметрах функции — но это так мало, что можно считать, будто нет.

С версии 7.0 до 7.3, которая сейчас в бета-тестировании, язык ускорялся — разница видна по замерам:

Результаты бенчмарков версий PHP на Bolt CMS 3.4.8

 7.3 станет последним релизом: поддерживать и править ошибки будут, но ничего принципиально нового не появится.

Ключевые преимущества

Популярность PHP обусловлена его следующими достоинствами:

  1. Простой и интуитивно понятный синтаксис. PHP быстро осваивают даже программисты-новички. Он вобрал все лучшие особенности таких популярных языков, как C, Java и Perl. Код PHP легко читается независимо от способа использования (для написания небольших скриптов или создания мощных приложений с использованием объектно-ориентированного подхода к реализации программы).
  2. Кроссплатформенность и гибкость. PHP совместим со всеми популярными платформами (Linux, Windows, MacOS). Написанные на нем приложения успешно работают на различном серверном ПО (IIS, Nginx, Apache и многих других).
  3. Отличная масштабируемость. PHP позволяет добиться максимальной производительности приложений, написанных на нем, с ростом аппаратных ресурсов. Веб-приложения, распределенные на несколько серверов, способны справляться с существенными нагрузками (большим трафиком).
  4. Встраиваемость в HTML-документы. На простую HTML-страницу можно легко добавить динамически изменяемый контент путем вставки блоков кода PHP. Они добавляются подобно HTML-тегам, не нарушают структуру документа.
  5. Активное развитие и совершенствование. Сообщество разработчиков постоянно трудится над внедрением дополнительного функционала, расширяющего возможности языка, упрощением синтаксиса и улучшением защиты от возможных атак.
  6. Простой поиск решений возникающих проблем. В интернете существует огромное число форумов, посвященных программированию на PHP.
  7. Широкие перспективы дальнейшего развития. Большинство CMS были созданы на чистом PHP и фреймворках. Этим обусловлены популярность и востребованность PHP программистов.

Будущее PHP: восьмая версия

Главная задача — сделать PHP быстрым при сохранении гибкости динамического языка. Разработчики понимают, что в дальнейшем нужно приходить к статической типизации. Сейчас рассматривают опциональный вариант, когда ее можно включать в определенных частях скрипта. Это наилучший путь из возможных.

Восьмая версия появится ориентировочно в 2020–2022 годах. На open source-платформах изменения принимаются общим голосованием совета разработчиков. Сейчас идет тестирование нововведений в PHP 8.

В мире PHP ничего не происходит без движения сообщества.

Расмус Лердорф

создатель PHP

Статическую типизацию планировали ввести в седьмой версии, но она не прошла голосование: нашлись изъяны. Ошибки исправили, и теперь мир разработки ждет возможность ее отключения одной командой в коде.

PHP частично написан на языке С, и в восьмой версии хотят полностью отойти от него. Также реализуют работу с матрицами: она ускорится в пять раз по сравнению с седьмой версией.

Оператор безопасного null (Nullsafe operator)

Null — сам по себе не очень хорошая штука (даже очень плохая). Когда функция возвращает , то в каждом месте, где идёт её вызов, программист обязан проверить на . И это приводит к ужасным последствиям.

По хорошему, должен быть метод , который будет кидать исключение в случае отсутствия результата. Но когда эти методы диктует фреймворк, то мы не можем ничего сделать. Единственное, это проверять каждый раз на либо, где это уместно, использовать .

Этот код более чистый, чем предыдущий. Но он не идеален. Для идеально чистого кода, нужно использовать шаблон Null Object, либо выбрасывать exception. Тогда нам не нужно будет держать в голове возможность null на каждом шагу.

Более правильный вариант:

Интересным моментом в использовании nullsafe есть то, что при вызове метода с помощью , параметры будут обработаны только если объект не :

Что такое PHP

Начнём с определения того, чем именно является PHP. Сложно в одном предложении дать полное представление об этом языке, поэтому опишем его следующими тремя характеристиками:

PHP — это препроцессор гипертекста (HTML).
PHP — это серверный язык программирования.
PHP — это скриптовый, интерпретируемый язык программирования.

Зачем нужен PHP

Поясним каждое из определений и узнаем, в каких задачах будет полезен PHP.

Основная задача PHP — это «оживление» HTML страниц.

Обычные HTML-страницы статичны. Статичность (или неизменность) означает, что после того, как страницу создали и загрузили на сайт, при каждом обращении к этой странице браузер покажет её любому пользователю в неизменном виде.

Но этого не всегда достаточно.

Почти всегда пользователи приходят на сайт за информацией, которая всё время меняется, и нужно отображать её актуальное состояние. Например:

  • показать курс валют;
  • подсказать погоду на завтра;
  • вывести счётчик посещений страницы.

Если использовать только HTML, то решить такие задачи не получится. Здесь-то нам и понадобится PHP. Он принимает входящий запрос от веб-сервера, выполняет сценарий и возвращает веб-серверу результат в виде готового HTML-код. Сервер отправляет этот результат в браузер пользователю, который, в свою очередь, отображает её пользователю. После этого видно свежий курс валют, погоду, и что угодно ещё.

РНР позволяет изменять веб-страницу на сервере непосредственно перед тем, как она будет отправлена браузеру. Давайте разберёмся, как это работает. PHP умеет исполнять код — так называемые сценарии. В ходе исполнения PHP может изменить или динамически создать любой HTML-код, который и является результатом исполнения сценария. Затем сервер отправляет этот код браузеру. При этом браузеру не известно, как была сформирована данная страница — статично сверстана верстальщиком, или динамически создана при участии PHP

Это не важно, т.к. браузер всегда работает только с тем, что получил от сервера

Давайте запомним, что сценарий — это программа, которая находится на стороне сервера и запускается в ответ на запрос от браузера.

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

Выполнение сценария также называют его интерпретацией, а сам PHP — интерпретатором.

Вы можете попрактиковаться в создании динамических страниц с помощью PHP в этом тренажёре.

Где используется PHP

Основная сфера применения языка PHP — это веб, то есть сайты, которые мы каждый день посещаем через браузер компьютера или смартфона

Важно понимать, что веб — это не весь интернет, а только самая большая и популярная его часть. Кроме веба через интернет работает электронная почта, мессенджеры, файлообменные сервисы, сетевые игры и многое другое

Практически каждый сайт, который есть в интернете, работает на PHP. Этот язык отлично подходит для любых динамических веб-сайтов, среди которых:

Оператор присваивания и слияние переменных

Переменные в php используются со знаком непосредственно перед идентификатором:

$mymane = "Иван";

Вывод значений переменных:

echo "Я изучаю РНР";
// или
print "Я изучаю РНР";

Присваивание значений других переменных:

$test1 = $test2;
echo $a, " ", $b; 
// или
echo $a; echo " "; echo $b;

Примеры:

1
2
3
4
5
6
7
8
<?php
$first = 'text1';
$second = $first;
$first = 'new text';
 
echo "Переменная first равна $first <br>";
echo "Переменная second равна". $second;
?>

Как видно из примера, оператор присваивания в php — это знак равенства.

Результатом выполнения программы будет:

Переменная first равна new text

Переменная second равна text1

Как работает HTTP, и зачем нам это знать

Программировать на PHP можно и без знания протокола HTTP, но есть ряд ситуаций, когда для решения задач нужно знать, как именно работает веб-сервер. Ведь PHP — это, в первую очередь, серверный язык программирования.

Протокол HTTP очень прост и состоит, по сути, из двух частей:

  • Заголовков запроса/ответа;
  • Тела запроса/ответа.

Сначала идёт список заголовков, затем пустая строка, а затем (если есть) тело запроса/ответа.

И клиент, и сервер могут посылать друг другу заголовки и тело ответа, но в случае с клиентом доступные заголовки будут одни, а с сервером — другие. Рассмотрим пошагово, как будет выглядеть работа по протоколу HTTP в случае, когда пользователь хочет загрузить главную страницу социальной сети «Вконтакте».

1. Браузер пользователя устанавливает соединение с сервером vk.com и отправляет следующий запрос:

GET / HTTP/1.1
Host: vk.com

2. Сервер принимает запрос и отправляет ответ:

3. Браузер принимает ответ и показывает готовую страницу

Больше всего нам интересен самый первый шаг, где браузер инициирует запрос к серверу vk.com
Рассмотрим подробнее, что там происходит. Первая строка запроса определяет несколько важных параметров, а именно:

  • Метод, которым будет запрошен контент;
  • Адрес страницы;
  • Версию протокола.

— это метод (глагол), который мы применяем для доступа к указанной странице. является самым часто используемым методом, потому что он говорит серверу о том, что клиент всего лишь хочет прочитать указанный документ. Но помимо есть и другие методы, один из них мы рассмотрим уже в следующем разделе.

После метода идет указание на адрес страницы — URI (универсальный идентификатор ресурса). В нашем случае мы запрашиваем главную страницу сайта, поэтому используется просто слэш — .
Последним в этой строке идет версия протокола и почти всегда это будет

После строки с указанием основных параметров всегда следует перечисление заголовков, которые передают серверу дополнительную полезную информацию: название и версию браузера, язык, кодировку, параметры кэширования и так далее.
Среди всех этих заголовков, которые передаются при каждом запросе, есть один обязательный и самый важный — это заголовок . Он определяет адрес домена, который запрашивает браузер клиента.

Сервер, получив запрос, ищет у себя сайт с доменом из заголовка , а также указанную страницу.
Если запрошенный сайт и страница найдены, клиенту отправляется ответ:
Такой ответ означает, что всё хорошо, документ найден и будет отправлен клиенту. Если говорить более обобщённо, стартовая строка ответа имеет следующую структуру:

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

  • 404 — если сервер доступен, но запрошённый документ не найден;
  • 503 — если сервер не может обрабатывать запросы по техническим причинам.

Спецификация HTTP 1.1 определяет 40 различных кодов HTTP.

После стартовой строки следуют заголовки, а затем тело ответа.

Базы данных

К сайту на PHP подключается база данных. Это во многом упрощает разработку, потому что вся информация будет храниться в таблицах, а не в самом коде. Так быстрее редактировать и добавлять данные на сайт.

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

Продолжим пример с авторизацией. Страница auth.php получает логин и пароль. Дальше она может сделать запрос в базу данных, чтобы узнать, существует ли такая комбинация.

<?

//Получаем данные из супермассива $_POST в переменные для удобства

$login = $_POST;

$password = $_POST;

//Делаем запрос в базу данных, чтобы проверить наличие пользователя с таким логином и паролем

$queryResult = mysql_query(“SELECT * FROM userlist WHERE login=’$login’ AND password=’$password’”);

//Выполняем проверку

 If(mysql_num_rows($queryResult) == 1) {

//Если есть1 совпадение, то выводим надпись об успешности операции

echo “Вы успешно вошли!”;

} else {

//Иначе пишем, что комбинация неверна

echo “Неверный логин или пароль!”;

}

?>

Разумеется, это очень упрощенная версия кода, которую вряд ли можно назвать защищенной. На самом деле нужно выполнить множество проверок, чтобы исключить вероятность SQL-инъекции — это когда пользователь пытается ввести некорректную информацию, чтобы получить доступ к базе данных.

Обзор версий: между первой и седьмой

Версии с первой по третью были «сырыми»: мало возможностей, хотя для создания простых сайтов их хватало. С версии 5.4 PHP стал отлаженной технологией. До этого было слишком много нюансов, и работать с ними было непросто.

Релизы 5.5 и 5.6 — серьезные, проверенные временем вещи. Они отлично себя показали и достаточно защищены от инъекцийDependency injection«Вживление» чужого вредоносного кода в программу. и возможностей взлома.

Шестую версию пропустили: она должна была поддерживать Unicode на уровне ядра, но релиз не состоялся. «PHP6 был амбициозным, но отстойным. Вот почему мы занялись PHP 7, в процессе пропустив шестую версию», — прокомментировал в своем блоге Vilson Duka, один из разработчиков.

Анимационное видео Питера Кокота о развитии ключевых модулей PHP в течение21 года жизни языка.

Седьмая версия считается революционной в плане скорости. 5.6 медленно работала с массивами и вообще с переменными: обработка статически нетипизированных данных происходила долго. Строка обрабатывалась в 60 раз медленнее, чем на C#. Это не бросается в глаза — речь о долях секунды. Но когда у тебя миллиард пользователей, как на Facebook, скорость критична.

История профессии

Скриптовый язык программирования с открытым кодом Personal Home Page (PHP) изначально был создан Расмусом Лердоррфом в 1995 году, а спустя три года переиздан после серьезной переработки. Очень быстро он занял лидирующие позиции в сфере веб-проектирования, особенно серверной его части. К его преимуществам можно отнести:

  • взаимодействие с большинством сервисов по управлению базами данных;
  • работа с сокетами, удаленными и локальными файлами;
  • возможность HTTP-авторизации и автоматического отправления заголовков;
  • извлечение параметров GET и POST в auto mode;
  • работа с загружаемыми на сервис файлами, cookies и XForms.

Несмотря на свой почтенный для IT-сферы «возраст», PHP продолжает оставаться в десятке самых популярных языков программирования. Разработчик, использующий этот код, может создавать динамические веб-сайты, состоящие из отдельных элементов (контента, файлов, скриптов, шаблонов). Пользователю в итоге показывается страница, которая была сформирована на стороне сервера.

Контейнер внедрения зависимостей

Поскольку мы настроили Composer, установка PHP-DI пройдёт практически безболезненно. Для этого снова обратимся к командной строке:

Обновите для конфигурирования и сборки контейнера.

Ничего особенного пока не произошло. Это лишь простой пример, где всё необходимое помещено в один файл для удобства наблюдения.

Мы , поэтому нужно явно объявить зависимости (а не использовать автоматическое внедрение или аннотации) и извлечь из контейнера объект .

Заметка на полях: автоматическое внедрение зависимостей может быть полезной фичей в начале создания приложения, но в дальнейшем оно усложняет сопровождение, поскольку зависимости остаются относительно скрытыми. К тому же возможно, что через несколько лет другой разработчик подключит какую-нибудь библиотеку, и в результате несколько библиотек будут реализовывать один интерфейс. Это сломает автоматическое внедрение зависимостей и приведёт к непредсказуемому потоку багов. Разработчик, внёсший изменение, может их вообще не заметить.

Давайте ещё больше всё упростим, импортировав пространства имён там, где это возможно.

Пока что выглядит всё так, словно мы устроили суматоху ради выполнения того, что уже делали раньше.

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

Функции в PHP

Функция — это команда, которая выполняет какие-либо действия, например расчёты, управление файлами и т.д.

Определить функцию просто — у неё после названия идут круглые скобки:

Функция phpinfo() выводит на экран информацию с текущими настройками PHP.

Результат работы функции phpinfo

Некоторые функции ожидают, что им передадут какое-нибудь значение. Например, функция округления ceil() ожидает число, которое она округлит:

Функция ceil() получает переданное нами значение 91.5, обрабатывает его (округляет до 92) и возвращает результат. А команда echo получает возвращённое функцией значение и выводит его на экран. Результатом работы этого скрипта будет 92.

Функции будут подробно рассмотрены в отдельном уроке.

Перспективы профессии

Сфера информационных технологий стремительно прогрессирует, и специалисты разных направлений нужны постоянно. Язык программирования PHP развивается, выходят все новые его версии, он явно не намерен сдавать свои позиции и еще долго остается актуальным при разработке интернет-ресурсов. Но профессионалу желательно владеть и другими кодами для поддержания своей востребованности на рынке труда.

Если у вас остались хоть малейшие сомнения в том, что профессия php-программист подходит именно вам, то мы настоятельно рекомендуем
пройти тест на профориентацию от
Профгид.
Он стоит сущие копейки, при этом позволяет избежать ошибок, которые могут пустить не в то русло и искалечить всю вашу жизнь.
Узнать больше >>

Операторы «кораблей»

Итак, все знают об операторе «космический корабль» с момента выхода PHP 7. Но менее известно, что одновременно с этим релизом был введён целый флот космических кораблей для проведения крупномасштабных операций.

Крошечный космический корабль

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

X-истребители

Если вы хотите добавить огневую мощь к предыдущему флоту, вы можете вызвать истребителей типа X к источнику PHP: . Следующий код вычитает 3 у (в оригинальной статье написано, что оператор прибавит 3 (), но это не так, см. вывод примера ниже — прим. пер.)

Линейный корабль

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

Разве не лучший способ написать так?

Звезда Смерти

Многие из вас бы спросили, а был ли встроен в PHP оператор «звезда смерти», и ответ таков: в данный момент неизвестно. Есть планы на это, но никто никогда не видел реального экземпляра. Мне бы очень хотелось видеть оператор в три строки, так как PHP будет первым, кто будем иметь подобное (и, когда это произойдёт, надеюсь, не с моего счёта спишут стоимость этого оператора).

Сервер RoadRunner

Наладить коммуникацию между Golang и РНР-процессами.
Управление процессами: создание, уничтожение, мониторинг воркеров.
Балансирование задач — эффективная раздача задач воркерам

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

Варианты взаимодействия между процессами

Embedding: встраивание PHP-интерпретатора непосредственно в Golang.go-phpShared Memory — использование общего пространства памяти,где процессы делят это пространство

HTTP-стек

Как реализуется:

  • поднимает HTTP-точку на стороне Golang;
  • получаем запрос;
  • преобразуем в формат PSR-7;
  • передаем запрос первому свободному воркеру;
  • распаковываем запрос в PSR-7-объект;
  • обрабатываем;
  • генерируем ответ.

библиотеку Golang NET/HTTP.независимый фреймворкиммутабеленминимальная обвязка

Сборка

Формы

Если вы знакомы с html, то знаете, что с его помощью нельзя просто так получить информацию, введенную пользователем. То есть вы можете создать красивую форму, но без PHP или другого подобного языка все данные просто исчезнут, когда он нажмет кнопку «Отправить».

Для начала создается форма подобного вида:

<form action=”/auth.php” method=”post”> <!—Форма—>

<input type=”text” name=”login” placeholder=”Логин”><br> <!—Поле ввода логина—>

<input type=”password” name=”password” placeholder=”Пароль”><br> <!—Поле ввода пароля—>

<input type=”submit” value=”Войти”> <!—Кнопка отправки данных—>

</form>

У тега <form> есть два атрибута: action и method. В первом указывается страница, куда будут отправлены данные, а во втором — метод передачи. Всего их два:

  1. POST — безопасный, но медленный метод. Им пользуются для передачи конфиденциальной информации: пароли, логины, адреса и так далее.
  2. GET — простой, но уязвимый метод. Вы могли видеть ссылки вида index.php?page=8&category=2. Информация записывается прямо в ссылку, и любой может поменять ее значение или поделиться ею, поэтому лучше не передавать так ничего секретного и позаботиться о дополнительной безопасности.

Из формы на страницу auth.php будут переданы переменные login и password. В зависимости от метода они попадут в супермассив $_POST или $_GET. Дальше на этой странице можно будет сделать с ними все что угодно, в том числе и проверить их наличие в базе данных.

Сессии и куки

Также их можно использовать для создания системы авторизации.

<?session_start(); //Запуск сессии. Эта строка всегда должна быть первой на странице, где нужно использовать сессии.

//Делаем запрос в базу данных

$queryResult = mysql_query(“SELECT * FROM userlist WHERE login=’$_SESSION’ AND password=’$_SESSION’”);

//Проверяем, есть ли совпадение

 If(mysql_num_row($queryResult) == 1) {

//В случае успеха получаем массив с данными из таблицы

$user = mysql_fetch_array($queryResult);

}

Echo “Добро пожаловать, ”.$user.”!”;

?>

Работать с такими вещами нужно аккуратно, потому что можно забить данными компьютер пользователя или нарушить законодательство некоторых стран. По европейским и российским законам, например, вы обязаны спросить разрешение на использование cookies.

Итоги

  • Увеличили скорость реакции точек приложения в 4 раза по сравнению с PHP-FPM.
  • Полностью избавились от ошибок 502 под нагрузками. При пиковых нагрузках сервер просто ждет чуть дольше и отвечает так, как если бы нагрузок не было.
  • После оптимизации утечек памяти воркеры висят в памяти до 2-х месяцев. Это помогает при написании распределенных приложений, поскольку все запросы между сервисами уже прокэшированы на уровне сокетов.
  • Используем Keep-Alive. Это существенно ускоряет общение между распределенной системой.
  • Внутри реальной инфраструктуры все помещаем в Alpine Docker в Kubernetes. Система деплоя и сборки проекта теперь проще. Все, что требуется — это собрать кастомный RoadRunner build под проект, положить в проект в Docker, залить Docker-образ, и после этого спокойно загружать наш pod в Kubernetes.
  • По реальному таймингу одного из проектов на отдельные точки, которые не имеют доступа к БД, среднее время ответа 0,33 мс.
Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector