Обновление содержимого
Основные новые дополнения к этому обновлению Задача синхронизации второго уровня
Компоненты Hyper/crontab и исправления ошибок для некоторых других компонентов
Добавлен
- #185
Ответ
увеличениеПоддержка xml
формата; - # Когда 202 создает непокрытое исключение в процессе, по умолчанию выводится информация о трассировке исключения.
- # 138 Увеличьте компонент временной задачи второго уровня;
- #195 изменение
повторная попытка()
Функциональное$раз
Поведенческое значение параметра указывает на количество повторных попыток, а не на количество выполнений. - ##198 оптимизация
Гиперф\Di\Контейнер
| этого()Метода, при передаче примера (например, интерфейса), который не создан в
$контейнер->имеет($интерфейс)При использовании метода он возвращает
false;
# 199 При сбое производственного сообщения AMQP оно автоматически повторит попытку один раз. - # Когда 200 упаковывает пакет развертывания проекта через Git, он больше не включается
- тесты
Папка;
Исправлено
- ##176 ремонт
LengthAwarePaginator::Url следующей страницы()
Ограничения типа на возвращаемые значения метода; - # 188 устраняет проблему, связанную с тем, что настройки агента клиента Guzzle недопустимы;
- # 211 Исправьте клиент RPC с несколькими проблемами, которые будут рассмотрены в последнем;
- # 212 Исправление ошибок клиента
ssl_key
исертификат
Проблемы с элементами конфигурации, которые не работают должным образом;
Обычно задачи синхронизации выполняются с помощью реализации команд Linux crontab
, но на самом деле не у всех разработчиков может быть сервер рабочей среды для задания временных задач, где компонент hyperf/crontab предоставляет вам функцию задания времени на уровне СЕК.
можно определить простым определением.
composer require hyperf/crontab
Запустите процесс планировщика задач
Перед использованием компонента Задачи синхронизации вам необходимо сконфигурировать/загрузить/процессы.
php
Зарегистрируйтесь внутри Hyperf\Crontab\Процесс\CrontabDispatcherProcess
Настройте процесс следующим образом:
Таким образом, при запуске службы будет запущен пользовательский процесс для анализа и отправки временных задач. В то же время вам также необходимо config/autoload/crontab.php
Внутренняя включить
Конфигурация установлена в true
Это означает включение функции временной задачи. Если файл конфигурации не существует, он может быть создан сам по себе. Конфигурация выглядит следующим образом:
true, ];
Определение Временных Задач
Определение по файлу конфигурации
Вы можете config/autoload/crontab.php
Настройте все ваши задачи синхронизации в файле конфигурации, и файл вернет одну Hyperf\Crontab\Crontab[]
Структурные массивы, такие как несуществующие файлы конфигурации, могут быть созданы сами по себе:
true, // Timing tasks defined by configuration files 'crontab' => [ (new Crontab ()- > setName ('Foo') - > setRule ('* * * *') - > setCallback ([App\ Task FooTask:: class,'execute']) - > setMemo ('This is an example of a timing task'), ], ];
Определение с помощью аннотации
с помощью @Crontab
Аннотаций можно быстро определить задачу, и следующие примеры определений совпадают с определением файла конфигурации. Определите имя Foo
Выполняйте один раз в минуту Приложение\Задача\FooTask::выполнение()
Задачи синхронизации.
logger->info(date('Y-m-d H:i:s', time())); } }
Атрибут задачи
имя
Имя временной задачи может быть любой строкой, и имя между каждой временной задачей должно быть уникальным.
правило
Правила выполнения задач синхронизации, определенные на уровне минут, в Linux crontab
Правила команд согласованы. При определении второго уровня длина правила изменяется с 5 бит до 6 бит, и перед правилом добавляются соответствующие узлы второго уровня, такие как */5 * * * * *
Он выполняется каждые 5 секунд. Обратите внимание, что правила существуют, когда определены аннотации \
При использовании символов их необходимо экранировать, то есть заполнить. *\/5 * * * * *
。
обратный звонок
Обратный вызов выполнения временной задачи, представляющий собой код, фактически выполняемый временной задачей, должен передать определение файла конфигурации. [$класс, $метод]
Массив, $класс
Для полного имени класса, $метод
по $классу
Одному из них общедоступный
Метод. Если это определено аннотациями, вам нужно указать только один из них в текущем классе public
Имя метода метода достаточно, если текущий класс имеет только один общедоступный
метод, вы можете даже не указывать этот атрибут.
меморандум
Примечания для задач синхронизации, которые являются необязательными атрибутами и не имеют логического значения, доступны только для разработчиков, на которые можно ссылаться, чтобы помочь понять Задачи синхронизации.
Планирование и стратегия распределения
Задачи синхронизации предназначены для обеспечения диспетчеризации и диспетчеризации задач выполнения с помощью различных стратегий, которые в настоящее время доступны только Стратегия выполнения нескольких процессов
、 СТРАТЕГИЯ ВЫПОЛНЕНИЯ СОТРУДНИЧЕСТВА
Две стратегии, по умолчанию Стратегия выполнения нескольких процессов
Последующие итерации добавят больше и более сильных стратегий.
Изменение политики планирования и распределения
Через в config/dependencies.php
изменение Гиперф\Кронтаб\Стратегия\Интерфейс стратегии
Экземпляр, соответствующий классу интерфейса, используется для изменения текущей политики, которая используется по умолчанию. Стратегия выполнения нескольких процессов
Соответствующий класс Hyper\Crontab\Стратегия\Стратегия процесса
Если мы хотим изменить политику на новую политику, например App\Crontab\Strategy\FooStrategy
, то выполните следующие действия:
[ \Hyperf\Crontab\Strategy\StrategyInterface::class => \App\Crontab\Strategy\FooStrategy::class, ], ];
Стратегия выполнения нескольких Процессов
Класс политики: Hyper\Crontab\Стратегия\Стратегия процесса
По умолчанию используйте эту политику CrontabDispatcherProcess
Процесс анализирует временные задачи и передает их друг другу посредством межпроцессного обмена данными и обучения Работник
В процессе, каждым Работником
Процесс фактически запускается и выполняет задачи с координатором.
СТРАТЕГИЯ ОСУЩЕСТВЛЕНИЯ СОТРУДНИЧЕСТВА
Класс политики: Hyper\Crontab\Стратегия\Стратегия сопрограммы
По умолчанию используйте эту политику Процесс диспетчера Crontab
Процесс анализирует временные задачи и создает координатора для каждой выполняемой задачи для запуска в процессе.
Hyperf основан на Swool 4.3+
Реализуя высокопроизводительную, очень гибкую структуру протокола PHP, встроенные серверы протоколов и большое количество часто используемых компонентов, производительность более традиционна на основе PHP-FPM
Структура качественно улучшается, обеспечивает сверхвысокую производительность, но также поддерживает чрезвычайно гибкую масштабируемость. Все стандартные компоненты реализованы на основе стандартов PSR, и на основе строгой конструкции внедрения зависимостей это гарантирует, что большинство компонентов или классов основаны на стандартах PSR. Сменный
И Многоразовые
. Библиотеки компонентов фреймворка в дополнение к общей сопрограмме s Клиенту MySQL
、 Клиенту Redis
Мы также подготовили для вас ассоциированное издание. Красноречивый ORM
、 Сервер и клиент WebSocket
、 Сервер и клиент JSON RPC
、 Сервер и клиент GRPC
、 Zipkin (Открытая трассировка) Клиент
、 Пожирающий HTTP-клиент
、 Клиент эластичного поиска
、 Консул
Хотя фреймворк, основанный на языке PHP, сейчас находится в спорной эпохе, мы все еще не можем увидеть идеальную структуру элегантного дизайна и сосуществования сверхвысокой производительности, а также фреймворк, который действительно прокладывает путь для микроуслуг PHP. Это первоначальное намерение Hyper и его членов команды, мы будем продолжать инвестировать в и для. Вы также можете присоединиться к нам в разработке с открытым исходным кодом.
Гиперскорость +
Из названия мы будем суперскорость
и гибкость
Как ген Гипера.
- Для сверхвысокой скорости мы используем сопрограммы Swool и оптимизируем конструкцию фреймворка для обеспечения сверхвысокой производительности.
- Для обеспечения гибкости мы опираемся на мощные компоненты внедрения зависимостей Hyper. Компоненты основаны на стандартных контрактах PSR и реализациях контрактов, определенных Hyper. Большинство компонентов или классов в рамках фреймворка можно заменить.
Основываясь на вышеуказанных характеристиках, hyperf будет обладать богатыми возможностями, такими как реализация веб-сервисов, шлюзовых сервисов, распределенного промежуточного программного обеспечения, архитектуры микросервисов, игровых серверов, Интернета вещей (IOT) и т.д.
Мы потратили много времени на составление документов, чтобы решить все виды проблем, вызванных отсутствием документов. Документы также содержат множество примеров, которые также удобны для новичков.
Мы провели множество модульных тестов для компонентов,чтобы убедиться в правильности логики и поддерживать документы высокого качества. До того, как Hyperf был официально открыт для публики (20 июня 2019 года), мы запустили несколько сервисов в интернет-компании C-wheel и B-wheel и более полугода стабильно их запускали. После суровых производственных условий мы официально открыли проект для внешнего мира.
Github (Точечная звезда) поддерживает нас. Группа QQ Hyperf: 862099724