PHP-BE1
312 subscribers
363 photos
11 videos
19 files
651 links
Канал по PHP, полезный и интересный контент для всех уровней.
По вопросам сотрудничества @cyberJohnny
Download Telegram
Сегодня хочу поделиться полезной практикой, которая реально экономит время при работе с чужим кодом — быстрая навигация и понимание проекта через composer.json.

Когда попадаешь в новый проект, чаще всего первым делом начинаешь блуждать по папкам, читать контроллеры, роуты, сервисы… Но есть более быстрый способ понять архитектуру - сразу открыть composer.json.

Что можно сразу понять:

- Какие библиотеки используются - а значит, какие фреймворки, ORM, инструменты кеширования или логирования ждут нас внутри.
- Какая версия PHP нужна — помогает избежать сюрпризов с несовместимыми функциями.
- Автозагрузка - раздел autoload и autoload-dev сразу подскажет, где искать код и как он структурирован. Например, если вижу App\\ => src/, я знаю, что основной код живёт в src.
- Скрипты - в scripts иногда прячутся удобные команды для деплоя, генерации, тестов, которые можно запускать через composer run-script.

Я часто делаю так: открываю composer.json, сразу строю для себя “карту” проекта и понимаю, где искать бизнес-логику и какие инструменты уже встроены.

А вы как знакомитесь с новым проектом? С чего начинаете?

👉 [|@php_be1]
Сегодня хочу поделиться темой, которая регулярно спасает мне часы (а иногда и дни) работы — как быстро находить и устранять узкие места в производительности PHP-приложения.

Когда проект начинает подтормаживать, первая реакция — «ну, наверное, сервер слабый». А на деле 80% проблем можно найти прямо в коде. Вот мой рабочий чеклист:

1. Включаю профилировщик.
Если проект на Laravel — laravel-debugbar или Clockwork. Для чистого PHP — Xdebug или Tideways. Они показывают, какие функции и запросы жрут время.

2. Смотрю SQL-запросы.
Удивительно, сколько «тормозов» сидит именно в базе. Часто помогает банальное добавление индексов или переписывание одного запроса.

3. Ищу повторяющиеся операции.
Иногда вижу: одна и та же функция дергается в цикле по 1000 раз, хотя результат можно закешировать.

4. Анализирую работу с файлами.
Если есть много file_get_contents() или операций с большими файлами — выношу их в фоновые задачи (очереди).

5. Включаю кэширование.
Даже простой OPcache и Redis для хранения промежуточных данных творят чудеса.

Мой совет: не пытайтесь «оптимизировать на глаз». Всегда начинайте с измерений — профилировщик покажет правду.

А вы как ищете и устраняете узкие места? Какие инструменты используете чаще всего?

👉 [|@php_be1]
Если у вас есть индексы в БД, то помните, что MySQL не может использовать их с функциями.

Наиболее распространенная ситуация — это поля и функции даты, такие как YEAR или MONTH.

Поэтому вместо YEAR(paid_at) используйте whereBetween

@php_be1
Нужно ли в PHP перед вызовом функций ставить обратный слэш?

Несколько лет назад я прочитал статью «How to dump and inspect PHP OPCodes» в которой наконец увидел, что опкоды в PHP действительно существуют. И кроме того, мы, разработчики, которые пишем на PHP на эти опкоды можем влиять, тем самым оптимизируя производительность нашего кода. В статье так же рассказывалось о том, как применение бэкслэшей может ускорить выполнение программ. Я был под впечатлением...

Опкодами (см. Код операции) называется некий промежуточный код, который всё ещё понятен человеку и который выполняется некой исполняющей средой. В случае PHP этой средой является Zend Virtual Machine (она же Zend Engine).

https://habr.com/ru/articles/934316/

👉 [|@php_be1]
🔧 Сложности с масштабированием консьюмеров в RabbitMQ? Узнайте, как избежать ошибок, которые могут привести к потерям в порядке обработки сообщений.

📅 На открытом уроке 21 августа в 20:00 МСК разберём реальные кейсы и покажем, как правильно масштабировать консьюмеры, сохраняя порядок обработки. Узнаете, какие проблемы могут возникнуть при некорректном масштабировании и как их решить.

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

🚀 Посетите вебинар и получите скидку на полный курс «Symfony Framework»! Регистрация открыта: https://clck.ru/3Nd8gf

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Релиз Laravel Boost
https://boost.laravel.com/

@php_be1
💡 Совет по Laravel

Передавайте большие файлы без перебоев, используя потоки.

👉 [|@php_be1]
💡 Совет по Laravel

Не позволяй запросам к базе данных замедлять работу. Используй фасад Cache в Laravel для временного кэширования данных и сокращения количества обращений к базе.

👉 [|@php_be1]
Сегодня хочу поделиться одной небольшой, но очень полезной привычкой, которая здорово экономит время в работе с PHP-проектами.

Когда я только начинал, я постоянно забывал про php artisan tinker (если речь про Laravel) или встроенный интерактивный шелл php -a. А ведь это супер-удобный способ быстро проверить кусок кода, протестировать работу функции или глянуть, что вернет тот или иной запрос.

Например, нужно быстро понять, как работает кастомный accessor в модели? Вместо того чтобы городить временные роуты или var_dump-ить в контроллере - открываешь tinker:

php artisan tinker
И сразу работаешь с моделью:

$user = App\Models\User::find(1);
$user->profile->full_name;

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

Еще круто использовать tinker для тестирования сервисов или вызова хелперов. Иногда я даже проверяю SQL-запросы через Eloquent, чтобы потом использовать их в сидерах или тестах.

Короче, мой совет: если еще не используете — приучите себя чаще заходить в tinker. Это ваш "быстрый песочница", которая всегда под рукой.

А вы как чаще отлаживаете код в Laravel - через tinker, dd() или дебаггер в IDE? Напишите в комментах, будет интересно сравнить!

👉 [|@php_be1]
🔥 Проверьте свои знания PHP! 🚀

Думаете, ваши знания PHP на уровне Middle+ или Senior? Пройдите наш квиз и узнайте, готовы ли вы освоить один из самых мощных PHP-фреймворков — Symfony!

Этот курс позволит вам развить навыки для разработки сложных и высокопроизводительных приложений. Вы научитесь обеспечивать безопасность приложений, проводить оптимизацию и эффективно использовать современные инструменты фреймворка, такие как Symfony, Git, Docker и многие другие.

На курсе вас ждут:
- Живые лекции с практикующими преподавателями
- Глубокое погружение в архитектуру Symfony

После курса вы сможете решать задачи уровня enterprise и работать с самыми популярными фреймворками.

👉 Пройдите тест, получите доступ к полезным урокам и скидку на курс «Symfony Framework»:
https://clck.ru/3NrJDn

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru