Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter
11.3K subscribers
1.34K photos
20 videos
26 files
4.03K links
Все самое полезное для пхпшника в одном канале.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/bca892d6

Для обратной связи: @proglibrary_feeedback_bot

РКН: https://gosuslugi.ru/snet/67a5d13cd6fa92100ee6f68b
Download Telegram
Создание компонента React с помощью Symfony UX

Статья объясняет, как интегрировать React-компоненты в проект Symfony, используя компонент symfony/ux-react.
🤔3👍2
Сколько в мире PHP-разработчиков?

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

Согласно отчету, PHP занимает шестое место с 9,8 миллионами разработчиков по всему миру.
🥰13👏3👍2🤔1
Приходилось ли вам приукрашивать опыт работы на собеседовании? Ловили ли вас на слове?
#интерактив
🥰1
4 лучших калькулятора памяти MySQL

Почему распределение памяти в MySQL имеет значение?


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

Чем могут помочь калькуляторы памяти MySQL?

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

1. Калькулятор памяти от Александра Авчинникова

Этот онлайн-калькулятор имеет минималистичный интерфейс без каких-либо инструкций. Введите объём памяти вашего сервера и 12 других параметров из вашего конфигурационного файла. Полоса заполняется, визуализируя, какой процент памяти вашего сервера потребляется вашими настройками.

🟢Плюсы: Лёгкость использования, минималистичный интерфейс, отличная визуализация потребления памяти сервера.

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

2. Калькулятор памяти MySQL

Этот веб-инструмент предлагает простой интерфейс для ввода значений 13 параметров, связанных с памятью, из вашего файла my.cnf. После заполнения таблицы он предоставляет оценку максимального использования памяти MySQL, ожидаемого от вашей конфигурации.

🟢Плюсы: Показывает значение по умолчанию для каждого параметра MySQL. Удобен для быстрых проверок.

Минусы: Предоставляет только информацию о максимальной потребности в памяти, без каких-либо рекомендаций.

3. Калькулятор памяти Abhinavbit для MySQL

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

🟢Плюсы: Простой интерфейс, показывает базовую память и память на одно подключение.

Минусы: Не предоставляет рекомендаций или предложений по настройке.

4. MySQLTuner

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

🟢Плюсы: Легкость использования с прямыми, понятными рекомендациями. Подходит для быстрых проверок и мгновенных улучшений. Работает с различными версиями MySQL и их форками, такими как MariaDB и Percona.

Минусы: Ограничен анализом существующих конфигураций, а не прогнозированием будущих потребностей в памяти. Может не предоставлять углубленной настройки, касающейся конкретно памяти.
👍6
История успеха автоматизированного перехода с FuelPHP на Laravel для 400k+ строк приложения

Здесь рассказывается о том, как команда мигрировала своё большое PHP-приложение с FuelPHP на Laravel с помощью инструмента автоматического рефакторинга Rector.
👍6😁2🤔1
Отслеживание чего-то, например, просмотров страниц с помощью MySQL может создать значительную нагрузку на производительность при высоком объеме трафика. Redis намного лучше справляется с этой задачей. Вы можете использовать Redis и команду планирования для поддержки синхронизации с MySQL на фиксированный интервал времени.
👍24
Как в PHP очистить память?

В PHP память очищается автоматически после окончания выполнения скрипта. Однако, есть несколько способов управлять памятью для оптимизации работы скрипта:

1. Очистка переменных: Удалив все ссылки на объект или массив, PHP автоматически освободит память, занимаемую ими. Использование функции `unset()` позволяет явно удалить переменную или ее элементы.

2. Освобождение памяти после работы с большими массивами: Для этого можно использовать функцию `unset()` или присвоить переменной пустое значение (`$var = null`), чтобы удалить ссылку на массив и освободить память.

3. Использование `unset()` после работы с объектами: Аналогично предыдущему пункту, нужно удалить ссылку на объект, чтобы очистить память. Если объект был инициализирован с помощью конструктора, то вызов `unset()` может привести к вызову деструктора объекта.

4. Использование `gc_collect_cycles()`: Функция `gc_collect_cycles()` используется для принудительного вызова сборщика мусора, который освобождает память, занимаемую неиспользуемыми объектами и циклами ссылок.

5. Управление памятью экстенсионных функций: Если используются расширения PHP, следует обратить внимание на их документацию, так как некоторые расширения могут предоставлять специальные функции для управления памятью.

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

#вопросы_с_собеседований
👍3
Читаемые end-to-end тесты для PHPStan с помощью bashunit

Статья описывает опыт использования end-to-end тестов в проекте PHPStan, который разрабатывается на языке PHP и предназначен для статического анализа кода. Основной акцент делается на том, как эти тесты реализованы с помощью bash-скриптов и GitHub Actions, а также на преимуществах такого подхода.
👍2
📣 Использование двух помощников в Laravel принесет удивительные результаты...

В этом случае сервис будет вызван и попытается снова. Если он все еще не удастся сработать, об этом будет сообщено, но запрос не упадет.
🥱10🔥3🎉2
PHP 8.4: Новые функции поиска в массиве. Пишем с нуля

В PHP 8.4 планируется добавить новые функции массива: array_find, array_find_key, array_any и array_all, которые являются вспомогательными функциями для общих шаблонов проверки массива на наличие элементов, соответствующих определенному условию.

В настоящее время существует несколько функций, обрабатывающих массивы с использованием обратного вызова. Однако по-прежнему отсутствуют функции для поиска отдельного элемента, соответствующего условию, и тесно связанные функции проверки наличия элементов, соответствующих условию. Реализовать эти функции в среде пользователей относительно просто, но они часто требуются, что приводит к тому, что колесо изобретается снова и снова. Кроме того, функции такого типа реализованы и в других языках программирования, таких как Rust, JavaScript или C++.

Поэтому есть причина включить эти функции в стандартную комплектацию следующей версии PHP. Кроме того, реализация этих функций очень похожа на array_filter и относительно проста в реализации, поэтому затраты на обслуживание должны быть низкими.
👍17🥰6🔥3
Практическое логирование для PHP-приложений с помощью OpenTelemetry

Это самый полный гайд по логированию в PHP с использованием OpenTelemetry
👍4
#хочу_спросить

Задавайте любые вопросы о программировании и получайте ответы от пользователей. В комментариях под постом укажите #язык, #стек и/или #библиотеку, по которым задаете вопрос.
PHP Static Analysis Attributes

Этот пакет позволяет использовать атрибуты вместо аннотаций PHPDoc для статического анализа с помощью PHPStan.
👍61
Что означает сложность алгоритма?

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

Существуют два основных типа сложности алгоритма: временная сложность и пространственная сложность.

Временная сложность алгоритма оценивает время, необходимое для его выполнения, в зависимости от размера входных данных. Обычно время выполнения алгоритма измеряется в тактах процессора или в секундах. Примеры временной сложности включают константную сложность O(1) (выполнение за постоянное время), линейную сложность O(n) (выполнение занимает время, пропорциональное размеру входных данных) и квадратичную сложность O(n^2) (выполнение занимает время, пропорциональное квадрату размера входных данных).

Пространственная сложность алгоритма оценивает объем памяти, необходимый для его выполнения, в зависимости от размера входных данных. Обычно пространственная сложность измеряется в байтах. Примеры пространственной сложности включают константную сложность O(1) (не зависит от размера входных данных), линейную сложность O(n) (потребляет память, пропорционально размеру входных данных) и квадратичную сложность O(n^2) (потребляет память, пропорционально квадрату размера входных данных).

#вопросы_с_собеседований
👏3😢1
WeakMaps — скрытая жемчужина в PHP

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

Сложность возросла, когда потребовалось создать структуру узлов (Node), где каждый узел может содержать дочерние узлы и элементы. Для нахождения нужного узла использовался MagicNodeFinder, но при удалении элементов возникли проблемы: не было способа точно определить, в каком узле находится элемент, что приводило к неэффективному обходу дерева.

Решение пришло с использованием WeakMap, нового в PHP 8.0. WeakMap позволяет хранить объекты без увеличения их ссылочного счетчика, поэтому при удалении объекта из памяти, он автоматически удаляется и из WeakMap. Это позволило легко управлять элементами в узлах без необходимости обхода дерева при удалении.

Использование WeakMap улучшило производительность и упростило код. Теперь, когда элемент удаляется из массива, он автоматически удаляется и из WeakMap узла.
👍3🔥21💯1
Анонимные и стрелочные функции: как использовать их вместо create_function в PHP 8

В статье рассказано, как команда проводила рефакторинг кода при переходе с PHP 7.4 на PHP 8 и на что заменили одну из самых популярных функций — create_function.
🌚9🥱5👍4😁2
Сколько раз в неделю вы ездите в офис? Вы бы хотели перейти на удалёнку?
#интерактив