mirror of
https://gitee.com/hyperf/hyperf.git
synced 2024-11-30 02:37:58 +08:00
Translate doc
This commit is contained in:
parent
1b4511dfd9
commit
323d4a111f
@ -5,7 +5,7 @@
|
||||
|
||||
## 如何提交我的組件?
|
||||
|
||||
如果您開發的協程組件適配了 Hyperf,那麼您可以直接對 [hyperf/hyperf](https://github.com/hyperf/hyperf) 項目的 `master` 分支發起您的 `Pull Request`,也就是更改當前頁`(./zh-cn/awesome-components.md)`。
|
||||
如果您開發的協程組件適配了 Hyperf,那麼您可以直接對 [hyperf/hyperf](https://github.com/hyperf/hyperf) 項目的 `master` 分支發起您的 `Pull Request`,也就是更改當前頁`(zh-cn/awesome-components.md)`。
|
||||
|
||||
## 如何適配 Hyperf ?
|
||||
|
||||
|
@ -13,7 +13,7 @@ composer require hyperf/circuit-breaker
|
||||
## 使用熔斷器
|
||||
|
||||
熔斷器的使用十分簡單,只需要加入 `Hyperf\CircuitBreaker\Annotation\CircuitBreaker` 註解,就可以根據規定策略,進行熔斷。
|
||||
比如我們需要到另外服務中查詢用户列表,用户列表需要關聯很多的表,查詢效率較低,但平常併發量不高的時候,相應速度還説得過去。一旦併發量激增,就會導致響應速度變慢,並會使對方服務出現慢查。這個時候,我們只需要配置一下熔斷超時時間 `timeout` 為 0.05 秒,失敗計數 `failCounter` 超過 1 次後熔斷,相應 `fallback` 為 `App\Service\UserService` 類的 `searchFallback` 方法。這樣當響應超時並觸發熔斷後,就不會再請求對端的服務了,而是直接將服務降級從當前項目中返回數據,即根據 `fallback` 指定的方法來進行返回。
|
||||
比如我們需要到另外服務中查詢用户列表,用户列表需要關聯很多的表,查詢效率較低,但平常併發量不高的時候,響應速度還説得過去。一旦併發量激增,就會導致響應速度變慢,並會使對方服務出現慢查。這個時候,我們只需要配置一下熔斷超時時間 `timeout` 為 0.05 秒,失敗計數 `failCounter` 超過 1 次後熔斷,相應 `fallback` 為 `App\Service\UserService` 類的 `searchFallback` 方法。這樣當響應超時並觸發熔斷後,就不會再請求對端的服務了,而是直接將服務降級從當前項目中返回數據,即根據 `fallback` 指定的方法來進行返回。
|
||||
|
||||
```php
|
||||
<?php
|
||||
|
@ -360,4 +360,80 @@ array(2) {
|
||||
|
||||
```
|
||||
|
||||
# 運行命令
|
||||
|
||||
## 命令行中運行
|
||||
|
||||
```bash
|
||||
php bin/hyperf.php foo
|
||||
```
|
||||
|
||||
## 在 Command 中運行其他命令
|
||||
|
||||
```php
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace App\Command;
|
||||
|
||||
use Hyperf\Command\Command as HyperfCommand;
|
||||
use Hyperf\Command\Annotation\Command;
|
||||
use Psr\Container\ContainerInterface;
|
||||
|
||||
/**
|
||||
* @Command
|
||||
*/
|
||||
class FooCommand extends HyperfCommand
|
||||
{
|
||||
/**
|
||||
* @var ContainerInterface
|
||||
*/
|
||||
protected $container;
|
||||
|
||||
public function __construct(ContainerInterface $container)
|
||||
{
|
||||
$this->container = $container;
|
||||
|
||||
parent::__construct('foo');
|
||||
}
|
||||
|
||||
public function configure()
|
||||
{
|
||||
parent::configure();
|
||||
$this->setDescription('foo command');
|
||||
}
|
||||
|
||||
public function handle()
|
||||
{
|
||||
$this->call('bar', [
|
||||
'--foo' => 'foo'
|
||||
]);
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## 在非 Command 中運行命令
|
||||
|
||||
```php
|
||||
$command = 'foo';
|
||||
|
||||
$params = ["command" => $command, "--foo" => "foo", "--bar" => "bar"];
|
||||
|
||||
// 可以根據自己的需求, 選擇使用的 input/output
|
||||
$input = new ArrayInput($params);
|
||||
$output = new NullOutput();
|
||||
|
||||
/** @var \Psr\Container\ContainerInterface $container */
|
||||
$container = \Hyperf\Utils\ApplicationContext::getContainer();
|
||||
|
||||
/** @var \Symfony\Component\Console\Application $application */
|
||||
$application = $container->get(\Hyperf\Contract\ApplicationInterface::class);
|
||||
$application->setAutoExit(false);
|
||||
|
||||
// 這種方式: 不會暴露出命令執行中的異常, 不會阻止程序返回
|
||||
$exitCode = $application->run($input, $output);
|
||||
|
||||
// 第二種方式: 會暴露異常, 需要自己捕捉和處理運行中的異常, 否則會阻止程序的返回
|
||||
$exitCode = $application->find($command)->run($input, $output);
|
||||
```
|
||||
|
@ -20,7 +20,7 @@ $message = ErrorCode::messages[ErrorCode::SERVER_ERROR] ?? '未知錯誤';
|
||||
|
||||
```
|
||||
|
||||
但這種實現方式並不友好,每當要查詢錯誤碼與對應錯誤信息時,都要在當前 `Class` 中搜索兩次。所以框架提供了基於註解的枚舉類。
|
||||
但這種實現方式並不友好,每當要查詢錯誤碼與對應錯誤信息時,都要在當前 `Class` 中搜索兩次,所以框架提供了基於註解的枚舉類。
|
||||
|
||||
## 安裝
|
||||
|
||||
@ -32,6 +32,12 @@ composer require hyperf/constants
|
||||
|
||||
### 定義枚舉類
|
||||
|
||||
通過 `gen:constants` 命令可以快速的生成一個枚舉類。
|
||||
|
||||
```bash
|
||||
php bin/hyperf.php gen:constants ErrorCode
|
||||
```
|
||||
|
||||
```php
|
||||
<?php
|
||||
|
||||
@ -57,7 +63,6 @@ class ErrorCode extends AbstractConstants
|
||||
*/
|
||||
const SYSTEM_INVALID = 700;
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
用户可以使用 `ErrorCode::getMessage(ErrorCode::SERVER_ERROR)` 來獲取對應錯誤信息。
|
||||
@ -88,7 +93,6 @@ class BusinessException extends ServerException
|
||||
parent::__construct($message, $code, $previous);
|
||||
}
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
### 拋出異常
|
||||
@ -112,7 +116,6 @@ class IndexController extends Controller
|
||||
throw new BusinessException(ErrorCode::SERVER_ERROR);
|
||||
}
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
### 可變參數
|
||||
@ -139,7 +142,6 @@ class ErrorCode extends AbstractConstants
|
||||
$message = ErrorCode::getMessage(ErrorCode::PARAMS_INVALID, ['user_id']);
|
||||
|
||||
// 1.2 版本以下 可以使用以下方式,但會在 1.2 版本移除
|
||||
|
||||
$message = ErrorCode::getMessage(ErrorCode::PARAMS_INVALID, 'user_id');
|
||||
```
|
||||
|
||||
@ -180,4 +182,3 @@ class ErrorCode extends AbstractConstants
|
||||
|
||||
$message = ErrorCode::getMessage(ErrorCode::SERVER_ERROR, ['param' => 'user_id']);
|
||||
```
|
||||
|
||||
|
@ -35,7 +35,7 @@ composer create-project hyperf/hyperf-skeleton
|
||||
|
||||
```
|
||||
# 下載並運行 hyperf/hyperf 鏡像,並將鏡像內的項目目錄綁定到宿主機的 /tmp/skeleton 目錄
|
||||
docker run -v /tmp/skeleton:/hyperf-skeleton -p 9501:9501 -it --entrypoint /bin/sh hyperf/hyperf:7.2-alpine-cli
|
||||
docker run -v /tmp/skeleton:/hyperf-skeleton -p 9501:9501 -it --entrypoint /bin/sh hyperf/hyperf:latest
|
||||
|
||||
# 鏡像容器運行後,在容器內安裝 Composer
|
||||
wget https://github.com/composer/composer/releases/download/1.8.6/composer.phar
|
||||
|
@ -5,7 +5,7 @@
|
||||
|
||||
## 如何提交我的元件?
|
||||
|
||||
如果您開發的協程元件適配了 Hyperf,那麼您可以直接對 [hyperf/hyperf](https://github.com/hyperf/hyperf) 專案的 `master` 分支發起您的 `Pull Request`,也就是更改當前頁`(./zh-cn/awesome-components.md)`。
|
||||
如果您開發的協程元件適配了 Hyperf,那麼您可以直接對 [hyperf/hyperf](https://github.com/hyperf/hyperf) 專案的 `master` 分支發起您的 `Pull Request`,也就是更改當前頁`(zh-cn/awesome-components.md)`。
|
||||
|
||||
## 如何適配 Hyperf ?
|
||||
|
||||
|
@ -13,7 +13,7 @@ composer require hyperf/circuit-breaker
|
||||
## 使用熔斷器
|
||||
|
||||
熔斷器的使用十分簡單,只需要加入 `Hyperf\CircuitBreaker\Annotation\CircuitBreaker` 註解,就可以根據規定策略,進行熔斷。
|
||||
比如我們需要到另外服務中查詢使用者列表,使用者列表需要關聯很多的表,查詢效率較低,但平常併發量不高的時候,相應速度還說得過去。一旦併發量激增,就會導致響應速度變慢,並會使對方服務出現慢查。這個時候,我們只需要配置一下熔斷超時時間 `timeout` 為 0.05 秒,失敗計數 `failCounter` 超過 1 次後熔斷,相應 `fallback` 為 `App\Service\UserService` 類的 `searchFallback` 方法。這樣當響應超時並觸發熔斷後,就不會再請求對端的服務了,而是直接將服務降級從當前專案中返回資料,即根據 `fallback` 指定的方法來進行返回。
|
||||
比如我們需要到另外服務中查詢使用者列表,使用者列表需要關聯很多的表,查詢效率較低,但平常併發量不高的時候,響應速度還說得過去。一旦併發量激增,就會導致響應速度變慢,並會使對方服務出現慢查。這個時候,我們只需要配置一下熔斷超時時間 `timeout` 為 0.05 秒,失敗計數 `failCounter` 超過 1 次後熔斷,相應 `fallback` 為 `App\Service\UserService` 類的 `searchFallback` 方法。這樣當響應超時並觸發熔斷後,就不會再請求對端的服務了,而是直接將服務降級從當前專案中返回資料,即根據 `fallback` 指定的方法來進行返回。
|
||||
|
||||
```php
|
||||
<?php
|
||||
|
@ -360,4 +360,80 @@ array(2) {
|
||||
|
||||
```
|
||||
|
||||
# 執行命令
|
||||
|
||||
## 命令列中執行
|
||||
|
||||
```bash
|
||||
php bin/hyperf.php foo
|
||||
```
|
||||
|
||||
## 在 Command 中執行其他命令
|
||||
|
||||
```php
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace App\Command;
|
||||
|
||||
use Hyperf\Command\Command as HyperfCommand;
|
||||
use Hyperf\Command\Annotation\Command;
|
||||
use Psr\Container\ContainerInterface;
|
||||
|
||||
/**
|
||||
* @Command
|
||||
*/
|
||||
class FooCommand extends HyperfCommand
|
||||
{
|
||||
/**
|
||||
* @var ContainerInterface
|
||||
*/
|
||||
protected $container;
|
||||
|
||||
public function __construct(ContainerInterface $container)
|
||||
{
|
||||
$this->container = $container;
|
||||
|
||||
parent::__construct('foo');
|
||||
}
|
||||
|
||||
public function configure()
|
||||
{
|
||||
parent::configure();
|
||||
$this->setDescription('foo command');
|
||||
}
|
||||
|
||||
public function handle()
|
||||
{
|
||||
$this->call('bar', [
|
||||
'--foo' => 'foo'
|
||||
]);
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## 在非 Command 中執行命令
|
||||
|
||||
```php
|
||||
$command = 'foo';
|
||||
|
||||
$params = ["command" => $command, "--foo" => "foo", "--bar" => "bar"];
|
||||
|
||||
// 可以根據自己的需求, 選擇使用的 input/output
|
||||
$input = new ArrayInput($params);
|
||||
$output = new NullOutput();
|
||||
|
||||
/** @var \Psr\Container\ContainerInterface $container */
|
||||
$container = \Hyperf\Utils\ApplicationContext::getContainer();
|
||||
|
||||
/** @var \Symfony\Component\Console\Application $application */
|
||||
$application = $container->get(\Hyperf\Contract\ApplicationInterface::class);
|
||||
$application->setAutoExit(false);
|
||||
|
||||
// 這種方式: 不會暴露出命令執行中的異常, 不會阻止程式返回
|
||||
$exitCode = $application->run($input, $output);
|
||||
|
||||
// 第二種方式: 會暴露異常, 需要自己捕捉和處理執行中的異常, 否則會阻止程式的返回
|
||||
$exitCode = $application->find($command)->run($input, $output);
|
||||
```
|
||||
|
@ -20,7 +20,7 @@ $message = ErrorCode::messages[ErrorCode::SERVER_ERROR] ?? '未知錯誤';
|
||||
|
||||
```
|
||||
|
||||
但這種實現方式並不友好,每當要查詢錯誤碼與對應錯誤資訊時,都要在當前 `Class` 中搜索兩次。所以框架提供了基於註解的列舉類。
|
||||
但這種實現方式並不友好,每當要查詢錯誤碼與對應錯誤資訊時,都要在當前 `Class` 中搜索兩次,所以框架提供了基於註解的列舉類。
|
||||
|
||||
## 安裝
|
||||
|
||||
@ -32,6 +32,12 @@ composer require hyperf/constants
|
||||
|
||||
### 定義列舉類
|
||||
|
||||
通過 `gen:constants` 命令可以快速的生成一個列舉類。
|
||||
|
||||
```bash
|
||||
php bin/hyperf.php gen:constants ErrorCode
|
||||
```
|
||||
|
||||
```php
|
||||
<?php
|
||||
|
||||
@ -57,7 +63,6 @@ class ErrorCode extends AbstractConstants
|
||||
*/
|
||||
const SYSTEM_INVALID = 700;
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
使用者可以使用 `ErrorCode::getMessage(ErrorCode::SERVER_ERROR)` 來獲取對應錯誤資訊。
|
||||
@ -88,7 +93,6 @@ class BusinessException extends ServerException
|
||||
parent::__construct($message, $code, $previous);
|
||||
}
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
### 丟擲異常
|
||||
@ -112,7 +116,6 @@ class IndexController extends Controller
|
||||
throw new BusinessException(ErrorCode::SERVER_ERROR);
|
||||
}
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
### 可變引數
|
||||
@ -139,7 +142,6 @@ class ErrorCode extends AbstractConstants
|
||||
$message = ErrorCode::getMessage(ErrorCode::PARAMS_INVALID, ['user_id']);
|
||||
|
||||
// 1.2 版本以下 可以使用以下方式,但會在 1.2 版本移除
|
||||
|
||||
$message = ErrorCode::getMessage(ErrorCode::PARAMS_INVALID, 'user_id');
|
||||
```
|
||||
|
||||
@ -180,4 +182,3 @@ class ErrorCode extends AbstractConstants
|
||||
|
||||
$message = ErrorCode::getMessage(ErrorCode::SERVER_ERROR, ['param' => 'user_id']);
|
||||
```
|
||||
|
||||
|
@ -35,7 +35,7 @@ composer create-project hyperf/hyperf-skeleton
|
||||
|
||||
```
|
||||
# 下載並執行 hyperf/hyperf 映象,並將映象內的專案目錄繫結到宿主機的 /tmp/skeleton 目錄
|
||||
docker run -v /tmp/skeleton:/hyperf-skeleton -p 9501:9501 -it --entrypoint /bin/sh hyperf/hyperf:7.2-alpine-cli
|
||||
docker run -v /tmp/skeleton:/hyperf-skeleton -p 9501:9501 -it --entrypoint /bin/sh hyperf/hyperf:latest
|
||||
|
||||
# 映象容器執行後,在容器內安裝 Composer
|
||||
wget https://github.com/composer/composer/releases/download/1.8.6/composer.phar
|
||||
|
Loading…
Reference in New Issue
Block a user