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

Список наших каналов: https://t.me/proglibrary/9197
Учиться у нас: https://proglib.io/w/bca892d6

Обратная связь: @proglibrary_feedback_bot

По рекламе: @proglib_adv
Прайс: @proglib_advertising
Download Telegram
🟢Вы можете запланировать работу ежедневно во многих различных структурах.

Вы можете запланировать выполнение команды artisan, класса Job, вызываемого класса, функции обратного вызова и даже выполнить сценарий оболочки.
Что такое Path Traversal?

Path Traversal в PHP — это уязвимость безопасности, при которой злоумышленник может попытаться получить доступ к файлам или директориям за пределами предназначенной области. Это может произойти, если приложение неправильно обрабатывает пользовательский ввод в пути файлов.

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

Для предотвращения атак Path Traversal важно правильно обрабатывать и валидировать пользовательский ввод, особенно при работе с файловой системой. Рекомендуется использовать абсолютные пути и проверять, что запрошенные ресурсы находятся в пределах ожидаемой области файловой структуры. Также полезно ограничивать права доступа к файлам и директориям на сервере.

#вопросы_с_собеседований
Выбор библиотеки PHP на основе производительности

Здесь обсуждается выбор библиотек для распознавания веб-сканеров (краулеров) в PHP с акцентом на их производительность в приложении Shopware. Рассматриваются три варианта: встроенная функция PHP get_browser, а также специализированные библиотеки jaybizzle/crawler-detect и matomo/device-detector.

Для тестирования скорости этих решений был написан код, который проверяет около 2700 пользовательских агентов. Инструмент профилирования Tideways помог определить производительность каждой библиотеки. Результаты показали, что функция get_browser работает значительно медленнее, чем сторонние библиотеки, и не подходит для реальных запросов.

Обе специализированные библиотеки показали схожую производительность с разницей в 12%: crawler-detect выполнилась за 767 мс, а device-detector — за 685 мс. Однако, при тестировании на одиночных запросах (один HTTP-заголовок), matomo/device-detector оказалась в 10 раз медленнее из-за инициализации регулярных выражений, что добавляет около 18 мс к каждому запросу. В то же время jaybizzle/crawler-detect генерирует регулярные выражения на этапе сборки, что позволяет обрабатывать запросы быстрее.

В итоге, для задачи определения краулера по одному запросу лучше подходит библиотека jaybizzle/crawler-detect с задержкой в 2 мс. matomo/device-detector, несмотря на её относительную медлительность в данном случае, может быть полезной для анализа большого количества запросов в фоновом режиме, где скорость работы с одиночными запросами не столь критична.
19 важных советов по оптимизации производительности Laravel

В этой статье рассмотрятся 19 советов, которые могут значительно повысить производительность вашего приложения Laravel
#дайджест #phpdevjob

Вакансии PHP разработчиков уровня Junior

▪️Backend разработчик
Москва. Д-проджект — веб разработка и сопровождение
Подробнее

▪️PHP-программист
Новосибирск. Intelsib — поисковое продвижение, контекстная реклама
Подробнее

Вакансии PHP разработчиков уровня Middle

▪️Fullstack разработчик
Казань. Майхит — управление отопительными котлами и инженерным оборудованием
Подробнее

▪️PHP developer
Удаленка. ТВИЛ СОФТ — разработка ПО
Подробнее

Вакансии PHP разработчиков уровня Senior

▪️PHP-developer
Екатеринбург. МЕДИАТЕН — разработка ПО
Подробнее

▪️Web-программист
Москва. Элитс — интернет-бутик брендовой одежды
Подробнее

Понравились вакансии?
❤️ — да
🤔 — нет
#хочу_спросить

Задавайте любые вопросы о программировании и получайте ответы от пользователей. В комментариях под постом укажите #язык, #стек и/или #библиотеку, по которым задаете вопрос.
🐘 Разработчики на PHP, устали от «тормозящего» кода и избыточного потребления памяти?

📆 Дата и время: ждем вас на открытом вебинаре 9 октября в 20:00 мск,

Где мы разберем:

➡️ как устроены процессорные кеши и оперативная память;
➡️ внутреннее представление данных в PHP;
➡️ простые и эффективные приёмы для ускорения работы вашего кода.

Спикер Дмитрий Кириллов — соучредитель и технический директор одного из крупнейших сервисов онлайн-регистрации бизнеса в России, имеет высшее педагогическое образование.

Встречаемся в преддверии старта курса «PHP Developer. Professional». Все участники вебинара получат специальную цену на обучение!

👉 Регистрируйтесь прямо сейчас, чтобы не пропустить мероприятие

Приятный бонус Курс можно приобрести в рассрочку и без переплаты

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

Erid 2Vtzqwk4RLd
Please open Telegram to view this post
VIEW IN TELEGRAM
Что такое хэш-функция и где она используется?

Хэш-функция в PHP — это алгоритм, который принимает входные данные (например, строку или файл) и возвращает фиксированный набор символов, который обычно представляет собой строку фиксированной длины. Результат, полученный от хэш-функции, обычно называют хэшем или хэш-значением.

Основные характеристики хэш-функций:

Фиксированная длина вывода: Хэш-функции возвращают хэш с постоянной длиной, независимо от размера входных данных.

Эффективность: Для любых входных данных вычисление хэш-функции должно быть быстрым.

Уникальность: Идеальная хэш-функция должна обеспечивать уникальность хэш-значений для различных входных данных. Однако, из-за ограниченной длины вывода, существует возможность коллизий (ситуаций, когда разные входные данные дают одинаковый хэш).

В PHP существует множество хэш-функций, таких как MD5, SHA-1, SHA-256, SHA-512 и др. Они широко используются в различных областях программирования:

1️⃣Хранение паролей: Хэш-функции часто используются для хранения паролей пользователей в базах данных. Вместо хранения самих паролей, системы хранят их хэши. При проверке пароля введенного пользователем, система хэширует введенный пароль и сравнивает его с сохраненным хэшем.

2️⃣Цифровые подписи и проверка целостности данных: Хэш-функции используются для создания цифровых подписей и проверки целостности данных. Например, в криптографических протоколах, таких как HMAC (Hash-based Message Authentication Code).

3️⃣Контроль целостности файлов: Хэш-функции позволяют проверить, не были ли изменены файлы. Путем сохранения хэшей файлов и их сравнения в последующем, можно обнаружить любые изменения.

4️⃣Хэширование данных в хранилищах и поисковых индексах: Хэш-функции используются для быстрого поиска и сравнения данных, таких как в хэш-таблицах.

Важно отметить, что для хэширования паролей в PHP рекомендуется использовать функцию password_hash(), которая обеспечивает дополнительные меры безопасности. Избегайте использования устаревших хэш-функций, таких как MD5 и SHA-1, в критических сценариях, так как они считаются небезопасными.

#вопросы_с_собеседований
Высокочастотные метрики в PHP с TCP-сокетами

Здесь описывается решение для высокочастотного логирования в среде с большим количеством запросов на сервере, использующем PHP. В статье объясняется, как отслеживать метрики производительности, такие как API и запросы к базе данных, с минимальным влиянием на работу системы.

Структура логирования: Приводится стандартизированная запись логов, где указывается название метрики, тип, значение и продолжительность выполнения.

Примеры логирования:

🔸API-запросы.
🔸SQL-запросы.
🔸Логирование файла и строки вызова через debug_backtrace.

Логирование через TCP сокет:
Предпочтительно отправлять логи напрямую в агрегатор через TCP-сокет, а не сохранять их. Используется формат NDJSON для передачи данных, а метрики агрегируются с помощью инструментов, таких как Prometheus.

Минимизация нагрузки: Описаны методы минимизации влияния логирования на систему:

✔️Логирование должно потреблять минимальные ресурсы (RAM, CPU, диск, сеть).
✔️Логирование можно включать/выключать без перезагрузки сервера.
✔️Логирование должно корректно работать даже в случае недоступности сервера для логов.

Метод обработки трех возможных состояний TCP-порта: Порт может быть открыт, закрыт или заблокирован брандмауэром, и система должна обрабатывать эти случаи без блокировки приложения.
⭐️ Вы можете использовать readStream и writeStream, чтобы скопировать файл (или все файлы из папки) с одного диска на другой, сохраняя низкое использование памяти.
Привет, друзья! 👋

Мы хотим обсудить важную тему — токсичность в среде разработчиков и значимость поддержки и наставничества. Нам интересно узнать ваше мнение и опыт! Поделитесь своими мыслями, и самые полезные советы мы включим в нашу статью. Вот несколько вопросов для вас:

🤔 Приходилось ли вам сталкиваться с токсичными коллегами на работе? Как вы справлялись с этой ситуацией?
🌟 Какие качества вы считаете важными для хорошего наставника в IT-сфере?
💡 Какие советы вы бы дали тем, кто хочет создать более поддерживающую и позитивную рабочую атмосферу?
Спасибо за ваше участие! Ваши ответы помогут сделать рабочую среду лучше для всех. 🚀
⚙️ Подпишись на нашу еженедельную email-рассылку, чтобы быть в курсе последних открытий и тенденций в мире бэкенда.

В еженедельных письмах ты найдешь:
● Языки программирования и фреймворки для бэкенда
● Архитектура и проектирование серверных приложений
● Базы данных и управление данными
● Безопасность и защита данных
● Облачные технологии и DevOps
● API и интеграции
● Тестирование и отладка
● Инструменты и утилиты для бэкенд-разработчиков
● Лучшие практики и паттерны проектирования

👉Подписаться👈
💡 Зачем использовать distributed lock: на заметку разработчику

Распределённая блокировка (distributed locking) — это метод координации доступа к общим ресурсам между несколькими процессами или узлами в распределённой системе.

👉 Источник
#дайджест новостей по PHP за неделю:

🔎PHP 8.4.0 RC 1 теперь доступен для тестирования — Команда PHP рада объявить о выпуске PHP 8.4.0, RC 1. Это первый релиз-кандидат, продолжающий цикл выпуска PHP 8.4, примерный план которого указан в PHP Wiki.

🔎Выпущены PHP 8.1.30, PHP 8.2.24 и PHP 8.3.12 — Команда разработчиков PHP объявляет о скором выходе PHP 8.1.30, PHP 8.2.24 и PHP 8.3.12. Это релиз безопасности.

🔎Laravel MongoDB выпускает версию 5.0

🔎Выпущен CakePHP 4.5.7 — Улучшения: Добавлены аннотации для mixin и template в классы Association. Исправление того, что BehaviorRegistry::unload() не отсоединял методы camelCase.

🔎Неделя Symfony #926 (23-29 сентября 2024 года) — На этой неделе в грядущей версии Symfony 7.2 были добавлены такие новые возможности, как поддержка определения доверенных хостов и заголовков с помощью env vars, улучшение команды debug:asset-mapper для поиска и фильтрации активов, а также разрешение парсерам запросов возвращать несколько RemoteEvent в веб-хуках.