(звезда) Вебинар был 10.02.2022

Цели занятия

разобраться в том, как устроен PHP «под капотом»

Краткое содержание

  • компиляция и интерпретация;

  • runtime и сборка мусора.

Результаты

  • научиться писать приложения, оптимизированные по потреблению памяти

Преподаватель

  • Дмитрий Кириллов

Дата и время

  • 10 февраля, четверг в 20:00

  • Длительность занятия: 90 минут


Тезисы из вебинара

Исходники языка PHP

(warning) Рекомендуется к изучению: Исходники PHP: https://github.com/php/php-src

Описание грамматики языка PHP

(warning) Все тут: https://phplang.org/

Другие полезные курсы

Что изучим?

Строгая типизация

Задается в коде так:

<?php declare(strict_types=1) ?>

Пример задачки на оптимизацию кода

(звезда) здесь код по сути пустой, умный компилятор бы его превратил в пустоту, но посмотрим как сработает компилятор php: (во вкладке VLD):

https://3v4l.org/9Flcc/vld

Циклы компиляции

Динамическая память

Модель памяти

Советует классные плагины для PhpStorm

  • Tabine AI code completion — помогает писать код (на основе анализа того что уже было написано)

  • PHP Inspections — валидирует код на ошибки

Структура данных Zval

Упражнение по дебагу

Изучить работу дебаггера и брейк-поинтов

(в slack будет инструкция по дебагу); будет еще отд. занятие по профилированию/отладке

Очистка памяти

  • Ответ: избыток данных в куче

Дебаг потребления памяти

Смотрим что сколько потребляет:

Циклические ссылки

Это переменные, ссылающиеся друг на друга

Вот так очистка не пройдет:

Нужен сборщик мусора, например:

(warning) Здесь gc_collect_cycles() найдет пустые ссылки и очистит память


3. Оптимизация

Проблема перекомпиляции

  • Ответ: компиляция по новой

Кеширование opcodes в OpCache

(звезда) включается в php.ini

Предзагрузка / preloading

JIT php 8.0+

(плюс) хорош в расчетах/математике

(минус) не полезен при работе с БД, API и др.

Структура JIT:


Tags

Нет комментариев

Добавить комментарий

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

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.