
- Главная
- Каталог
- Интернет технологии
- Библиотека пхпшника
Библиотека пхпшника
Полезные материалы по всему, что может быть интересно разработчику на PHP.
Статистика канала
missing() для настройки поведения привязки модели маршрута по умолчанию, когда модель не найдена? 🚀
Библиотека пхпшника
#vardumpPHP, вопреки всем мемам. Мы ищем того, кто поднимет планку обучения в PHP-сообществе.
Приметы:
— в совершенстве знает PHP (знание Python или Go приветствуется);
— умеет готовить современные фреймворки и чистую архитектуру;
— готов делиться знаниями с большой аудиторией;
— хочет стать медийным экспертом.
Условия:
— гонорар за разработку материалов;
— рост личного бренда и узнаваемости;
— поддержка команды Proglib.
Сдаться властям
P.S. Видел пхпшника, который пишет как бог? Сдай его нам.get() или all() загрузит все строки в память сразу — это:
❌ сильно расточительно по памяти,
❌ может привести к падению по OOM,
❌ скрипт может не успеть выполнить работу целиком.
Для таких ситуаций Laravel предлагает метод chunk(), который загружает данные частями (порциями) вместо всего набора сразу.
🧰 Что делает chunk()
Метод chunk() берет определённое количество записей за раз и передает их в callback для обработки. Laravel автоматически загрузит следующую партию после завершения предыдущей.
use App\Models\User;
User::chunk(200, function ($users) {
foreach ($users as $user) {
// обработка каждого пользователя
}
});
{}
📌 В этом примере Laravel:
загружает 200 пользователей за раз,
обрабатывает их,
затем переходит к следующей партии.
🧠 Почему это круто
✨ Снижение пикового потребления памяти
Вместо загрузки всей таблицы в память — всего 200 записей. Это позволяет обрабатывать десятки и сотни тысяч строк без OOM.
✨ Меньше рисков таймаута
Когда вы делаете работу по частям, выполнение разбивается на небольшие, предсказуемые блоки.
✨ Гибкость для batch-обновлений/экспортов
Дизайн идеально подходит для миграций, обновлений атрибутов, экспортов CSV и фоновых задач.
🔍 Немного про chunkById() и улучшения
Если код обновляет записи внутри цикла, обычный chunk() может вести себя непредсказуемо, потому что набор может меняться. В таких случаях лучше использовать chunkById(), который гарантирует постоянный порядок по id и предотвращает пропуски/повторы при обновлениях.
User::chunkById(200, function ($users) {
foreach ($users as $user) {
$user->update(['active' => true]);
}
});
{}
🧠 Продвинутые приёмы
💡 Жадная загрузка связей: если в обработке вам нужны связи (->with('profile')), загружайте их вместе с батчами — это предотвращает N+1-проблемы внутри chunk.
User::with('orders')->chunk(200, function ($users) {
foreach ($users as $user) {
// $user->orders уже загружены
}
});
{}
💡 Используйте в фоновых командах или джобах: chunk() отлично подходит для консольных команд и jobs, которые работают с большими массивами данных и не должны завершиться по таймауту.
🧠 Когда chunk — не лучший выбор
❗ Если вам нужно просто вывести данные на страницу пользователю — лучше использовать пагинацию, а не chunk. chunk больше для обработки данных внутри приложения, а не для отдачи клиенту.
Библиотека пхпшникаdocker-compose up → всё работает
Ключевая идея: State Container
SwooleApp использует долгоживущие воркеры, поэтому:
пулы Redis / БД создаются один раз при старте
соединения переиспользуются
нет постоянного connect/disconnect
⚠️ Важно: контейнер изолирован на воркер — 4 воркера = 4 пула. Это ограничение архитектуры Swoole.
Task Workers — зачем они нужны
Любая блокирующая операция = стоп HTTP-воркера.
Решение:
HTTP-воркер отдаёт задачу в Task Worker
сам продолжает обслуживать запросы
результат возвращается асинхронно
Так сервер не «залипает» на sleep(), I/O или тяжёлых запросах.
Почему не Laravel / Symfony + Swoole
Коротко и честно:
они проектировались под stateless PHP-FPM
глобальное состояние → утечки памяти
ORM без пулов соединений
много блокирующего кода
для стабильности нужно слишком много воркеров
В итоге теряется смысл Swoole.
SwooleApp проектировался сразу под long-living процессы, без костылей.
Кому подойдёт
микросервисы и API
high-load
real-time / async
если хочется Swoole, но без боли
если Laravel/Symfony на Swoole разочаровали
Это не замена Laravel, а лёгкий каркас для другой задачи.
👉 Хабр
Библиотека пхпшника@csrf, Secure + SameSite cookies
HTTPS + HSTS
rate-limit против DDoS
принцип минимальных прав
безопасная загрузка файлов
APP_DEBUG=false, закрытые .env, storage, vendor
6️⃣ Зависимости
composer audit
composer update --dry-run roave/security-advisories
7️⃣ Перед стартом
backup БД и файлов;
включённые логи и мониторинг;
план реагирования.
🔗 Medium
Библиотека пхпшникаОтзывы канала
всего 5 отзывов
- Добавлен: Сначала новые
- Добавлен: Сначала старые
- Оценка: По убыванию
- Оценка: По возрастанию
Каталог Телеграм-каналов для нативных размещений
Библиотека пхпшника — это Telegam канал в категории «Интернет технологии», который предлагает эффективные форматы для размещения рекламных постов в Телеграмме. Количество подписчиков канала в 11.0K и качественный контент помогают брендам привлекать внимание аудитории и увеличивать охват. Рейтинг канала составляет 11.3, количество отзывов – 5, со средней оценкой 5.0.
Вы можете запустить рекламную кампанию через сервис Telega.in, выбрав удобный формат размещения. Платформа обеспечивает прозрачные условия сотрудничества и предоставляет детальную аналитику. Стоимость размещения составляет 20559.42 ₽, а за 21 выполненных заявок канал зарекомендовал себя как надежный партнер для рекламы в TG. Размещайте интеграции уже сегодня и привлекайте новых клиентов вместе с Telega.in!
Вы снова сможете добавить каналы в корзину из каталога
Комментарий