Пишем на PHP и не теряем память • Валентин Удальцов • BeerPHP • 6 июня 2024
Vložit
- čas přidán 23. 07. 2024
- 0:00 Крутой монтаж BeerPHP
0:20 Приветствие под Катюшу
1:15 RFC: new without parentheses
2:00 Ставь RoadRunner сегодня вечером!
3:08 Что такое утечка памяти?
4:04 Почему сложно искать и предотвращать утечки?
5:19 Не мешай PHP убираться!
7:15 Декомпозируй код!
9:17 Не зацикливай объекты!
14:50 Как протестировать?
16:24 Используй статические замыкания!
18:10 Читай построчно!
20:16 Читай из БД через курсор!
23:48 Пиши в БД эффективно!
29:23 Мемоизация и вытеснение
34:05 LRU
36:29 Не вытесняешь - чисти!
39:17 Инструменты
43:12 Полезные ссылки
45:24 Как часто я сталкивался с утечками в жизни
47:52 Есть ли универсальный способ понять, что память потекла?
52:00 История моего RFC
1:00:39 Как работает курсор в БД
1:02:05 Про концерт группы, волнения по поводу RFC и любимый стек на PHP
Слайды: vudaltsov.github.io/memory-le...
Подписывайтесь на наши каналы в Telegram:
• Пых t.me/phpyh,
• PHP Digest t.me/phpdigest,
• PHP умирает?! t.me/isPHPdying - Věda a technologie
Про вставку файло это прям про меня. Работал на проекте где мы "клиентам" рассылали файлы SQLite базы данных. Из постгри делали выгрузку, применяли разные фильтры и модификаторы к данным (заполняли цены, убирали лишние категории и товары), загружали это при помощи INSERT в SQLite базы и отправляли файлик. Веремеи занимало - ДОХРЕНА! Причём я бы не сказал что данных было сильно много, что-то порядка 100_000 записей.
Но пришёл я и всех спас. Просто делал выгрузку не в память, а в файл. А потом загружал сам файл в базу. Вместо десяти минут стало требоваться сильно меньше одной минуты. До сих пор горжусь собой!
Спасибо Валентин, очень актуальная тема!
00:00 - Введение, приветствие и благодарность
00:32 - Рассказ о достижениях и проекте RFC
01:28 - Обсуждение нового функционала в PHP 8.4 и его преимущества
02:04 - Roadrunner: использование и настройка, проблемы с памятью
03:11 - Определение утечек памяти, примеры и решения
05:34 - Как PHP управляет памятью, примеры и советы
09:11 - Циклические ссылки и их влияние на память
11:48 - Генерация кода и проблемы с памятью
15:11 - Тесты на утечки памяти, примеры и инструменты
18:42 - Работа с большими файлами и данными, эффективное чтение и запись
22:12 - Использование курсоров в базе данных для эффективного чтения данных
24:35 - Мемоизация и кэширование данных, различные стратегии
27:09 - Использование PHP для обработки больших объемов данных, пример с PostgreSQL
29:30 - Мемоизация и её оптимизация, стратегии вытеснения данных
34:25 - Примеры кода для мемоизации, LRU и другие алгоритмы
39:30 - Инструменты для обнаружения утечек памяти, профилирование и анализ
41:19 - Использование и настройка инструментов для анализа памяти
44:45 - Полезные ссылки и ресурсы для дальнейшего изучения
45:49 - Вопросы и ответы: утечки памяти в реальной жизни
48:37 - Вопросы и ответы: общие вопросы о PHP и оптимизации памяти
50:29 - Заключение, выводы и советы
А я как раз сам пишу!
@@PHPPoint Думаю это можно делегировать ChatGPT.
За Владом на стене написано 5555! 😅
А где посмотреть про RoadRunner?
Спасибо Валентин! Есть ли видео других участников конфы, докладов вроде было 3?
Оставьте бедный php в покое)
можно ли натравить psalm или cs fixer иключительно на изменения в моей ветке? или на определенные коммиты?
Если можно бы ссылки на статьи сюда продублировать, доклад пушка
Вижу ссылку на презу, не актуально получается, спасибо за доклад!
В примере с LRU вместо array_shift можно сделать unset($items[array_key_first($items)]). Ключи же не цифровые и порядок их не важен.
Отличная идея, спасибо!
А куда видео с канала удалились?
Вроде всё на месте. 90% видео на этом канале трансляции, поэтому они в разделе www.youtube.com/@PHPPoint/streams.
Качество звука просто ужасное неужели не смогли записать голос
Да в целом ок, не идеально конечно, но чего бухтеть-то.
изначально вообще записи не планировалось, так что спасибо и на этом)