В веб-приложениях часто требуется выполнять некоторые операции асинхронно. Для этого используются очереди сообщений. Можно использовать протокол AMQP, например RabbitMq или Kafka. В рамках облаков часто используется Amazon SQS. В России же есть Yandex, который в рамках Yandex Cloud предоставляет сервис Message Queue, который является реализацией протокола Amazon SQS. Таким образом, инструменты разработчика от SQS подходят
Browsing category PHP
Начиная с PHP 8 в PHP были добавлены атрибуты, которые доступны теперь нативно. В будущем они полностью заменят аннотации. Библиотеки стали переходить на использование нативного синтаксиса. Если вы используете doctrine, то при миграции на новую версию PHP возникает задача миграции аннотаций на атрибуты. Сделать это можно при помощи rector. Для этого нужно: Добавить rector как
Предположим, вам нужно ограничить возможность загрузки файлов и у вас PHP приложение. Файлы же могут находиться на удаленном или локальном по отношению к сайту хосте.
Есть пара вариантов как это сделать:
1. Загружать файлы средствами PHP в TMP, проверять может ли пользователь их скачать или нет и отдавать или не отдавать файл
2. Воспользоваться заголовком x-accel-redirect доступном в Nginx.
С тех пор, как вся конфигурация Symfony кешируется с контейнером для лучшей производительности , мы по очевидным причинам не должны использовать базу данных что бы где-то «напечатать» новую конфигурацию, нам нужно что-то умнее. Использование Symfony Voters Symfony использует Voters что бы определить доступ к URL и другим ресурсам. Множество voters которые входят в комплект поставки
2 версии Symfony подвержены рассогласованностью между сервисами и тестами. Вы используете Symfony 3.4 или 4.0? Вы хотите тестировать сервисы, но не знаете как получить их правильно? Сегодня мы посмотрим на возможные решения.
Предположим, есть задачка, вывести дерево. Под рукой PHP, а как view — Twig. Пусть структура данных на backend будет такой: $tree = [ [ ‘name’ => ‘foo’, ‘children’ => [ [ ‘name’ => ‘bar’, ‘children’ => [ [ ‘name’ => ‘baz’, ‘children’ => [ ], ], [ ‘name’ => ‘baz’, ‘children’ => [ ], ],
Функции для работы с датой и временем, которые поставляются с PHP прекрасны для форматирования дат, однако отсутствует простой способ определить квартал для timestamp или объекта DateTime. Вот тут маленькая функция, которая умеет возвращать квартал из DateTime: /** * Return the quarter for a timestamp. * @returns integer */ function quarter(\DateTime $dateTime){ return (int) ceil($dateTime->format(‘n’) /
Иногда требуется выбрать не всю таблицу, а только некоторые поля из связи в контроллере. Сделать это можно так: $user = User::with([‘department’ => function ($q) { $q->select([‘id’,’name’]); } ])->get();
Маленькая функция для преобразования размера в байтах в человекочитаемый вид: <?php function human_filesize($bytes, $decimals = 2) { $size = array(‘B’,’kB’,’MB’,’GB’,’TB’,’PB’,’EB’,’ZB’,’YB’); $factor = (int) floor((strlen($bytes) — 1) / 3); return sprintf(«%.{$decimals}f», $bytes / pow(1024, $factor)) . @$size[$factor]; } Использование <?php echo human_filesize(filesize(‘example.zip’)); Источник
Ваше приложение может использовать старый, небезопасный алгоритм хеширования для хранения пароля, такой как MD5 (без использования соли) Эта статья объясняет как преобразовать уже имеющиеся пароли, зашифрованные уязвимым алгоритмом в пароли зашифрованные с использованием безопасного метода хеширования (например с использованием Bcrypt ) Что бы решить проблему, мы сделаем конвертацию на лету, когда пользователь успешно входит в