Исправление ошибки, когда не очищался таймер процесса filter.
Добавлен вызов Redis с таймаутом по умолчанию 2000 мс, который можно настроить в соединении (влияет на Store и Cache).
<?php
return [
'codis' => [
'engine'=> 'redis',
'host' => '127.0.0.1',
'port' => 6602,
'pool' => [],
'timeout' => 1000, // ms
],
];
Добавление необязательного конфигурационного файла config/env/apiconf.php, который имеет приоритет над ApiConfig.
Регистрация пользовательской обработки исключений HTTP Server. В каталоге resource\middleware добавлен exceptionHandler.php. Пример:
<?php
return [
'match' => [
[
"index/index/index", "all",
],
// [
// ".*", "all"
// ]
],
'group' => [
"all" => [
TestExceptionHandler::class,
],
],
];
<?php
class TestExceptionHandler implements ExceptionHandler
{
public function handle(\Exception $e)
{
// Самостоятельно решить, как обрабатывать исключение
return new Response("Ошибка сети");
// или
return null; // Не обрабатывать.
}
}
Регистрация пользовательской обработки исключений TCP Server. В каталоге resource\middleware добавлен exceptionHandler.php. Пример:
<?php
use Zan\Framework\Network\Tcp\Exception\Handler\GenericExceptionHandler;
return [
'match' => [
[
"/com/youzan/nova/framework/generic/service/GenericService/invoke", "genericExceptionHandlerGroup",
],
[
"/Com/Youzan/Nova/Framework/Generic/Php/Service/GenericTestService/ThrowException", "genericExceptionHandlerGroup",
],
[
".*", "all"
]
],
'group' => [
"genericExceptionHandlerGroup" => [
GenericExceptionHandler::class
],
"all" => [
GenericExceptionHandler::class
],
],
];
match добавляет serviceName и соответствующую группу обработчиков, фреймворк автоматически сопоставляет и выполняет соответствующий обработчик группы, если сопоставление успешно. Обработчик класса, например:
<?php
class GenericExceptionHandler implements ExceptionHandler
{
public function handle(\Exception $e)
{
sys_error("GenericExceptionHandler handle: ".$e->getMessage());
throw new \Exception("Ошибка сети", 0);
}
}
После преобразования можно выбросить пользовательское исключение.
Добавлена опция конфигурации «app_configs».
return [
// Список сервисов, которые необходимо извлечь, здесь заполните имя приложения, зарегистрированное в реестре, если нет необходимости извлекать какие-либо сервисы, массив app_names может быть пустым
'app_names' => [
'scrm-api',
'pf-api',
],
// Извлечение конфигурации приложения
'app_configs' => [
// Извлекаем сервис scrm-api из домена com.youzan.service
'scrm-api' => [
'protocol' => 'nova',
'namespace' => 'com.youzan.service',
],
// Извлекаем pf-api сервис из домена com.youzan.test
'pf-api' => [
'protocol' => 'nova',
'namespace' => 'com.youzan.test',
],
],
];
Конфигурация «novaApi» поддерживает публикацию нескольких пакетов thrift.
// Совместимость со старым способом настройки
return [
'novaApi' => [
'path' => 'vendor/nova-service/pf/gen-php',
'namespace' => 'Com\\Youzan\\Pf\\',
],
];
// Настройка нескольких пакетов
// Обратите внимание: несколько пакетов требуют одинакового пространства имён
// Обратите внимание: агент haunt ограничивает использование нескольких виртуальных приложений на одном и том же IP+порту, что не применимо
return [
'novaApi' => [
[
'path' => 'vendor/nova-service/scrm-base/gen-php',
'namespace' => 'Com\\Youzan\\Scrm\\',
'domain' => 'com.youzan.service', // Необязательно, по умолчанию com.youzan.service, конфигурация службы опубликована в конкретном домене
'appName' => 'scrm', // Необязательно, по умолчанию Application::getName(), конфигурация службы публикуется под именем приложения
'protocol' => 'nova', // Необязательно, в настоящее время всегда равно nova
],
[
'path' => 'vendor/nova-service/scrm-core/gen-php',
'namespace' => 'Com\\Youzan\\Scrm\\',
'domain' => 'com.youzan.service', // Необязательно
``` **Сервис регистрации и сервис извлечения: некоторые пояснения**
1. При регистрации сервиса ключ etcdKey формируется на основе протокола, пространства имён, имени службы, IP-адреса и порта.
2. В списке srvList одноимённые ключи etcdKey определяют порядок приоритета: последующие элементы списка перекрывают предыдущие.
3. Список srvList используется для регистрации нескольких групп служб с разными пространствами имён или именами служб.
4. В системе zan протокол по умолчанию равен nova.
5. Пространство имён в zan можно настроить в novaApi, значение по умолчанию — com.youzan.service.
6. Имя службы в zan также настраивается в novaApi. Значение по умолчанию — Application::getName().
7. Различные пакеты thrift группируются по ключу etcdKey, и для каждой группы добавляются обобщённые методы вызова.
**Извлечение сервисов: пояснения**
1. Извлечение сервисов из etcd осуществляется по приложениям, возвращая n узлов экземпляра приложения.
**Thrift и приложение**
1. В файлах thrift в пространстве имён nova com.youzan.a.b.c связь между a и appName не является обязательной и может различаться.
------------------------------------------------------------------------------------------
### 2017-02-20 Feature Поддержка нескольких конфигураций App
Добавлены пути конфигурации root/resource/config_{{appName}}, где «appName» заменяется на «_». Конфигурация в пути config_{{appName}} имеет приоритет над конфигурацией в корневом пути config.
------------------------------------------------------------------------------------------
### 2017-02-04 Feature
В MySQL добавлена поддержка асинхронных транзакций.
------------------------------------------------------------------------------------------
### 2017-01-17 Fix
В Url::site схема по умолчанию установлена как https.
------------------------------------------------------------------------------------------
### 2017-01-16 Feature
1. Динамическое изменение весов и реализация мягкого распределения нагрузки.
2. Регистрация ошибок фреймворка в журнале.
3. Переработка hawk SDK для более полного сбора информации о мониторинге.
------------------------------------------------------------------------------------------
### 2017-01-02 Fix
Исправлена ошибка, связанная с несоответствием кода в обратном вызове async_mysql и кодом swoole, что приводило к появлению уведомлений об ошибках и отсутствию информации об исключениях.
------------------------------------------------------------------------------------------
### 2016-12-28 Fix
Устранена ошибка в планировщике, которая приводила к отправке асинхронных задач при возникновении исключений.
------------------------------------------------------------------------------------------
### 2016-12-23 Feature
Для соединений TCP и Redis добавлена поддержка Unix Socket. Добавлен элемент конфигурации path.
Конфигурация:
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )