# 自定義進程 [hyperf/process](https://github.com/hyperf/process) 可以添加一個用户自定義的工作進程,此函數通常用於創建一個特殊的工作進程,用於監控、上報或者其他特殊的任務。在 Server 啓動時會自動創建進程,並執行指定的子進程函數,進程意外退出時,Server 會重新拉起進程。 ## 創建一個自定義進程 在任意位置實現一個繼承 `Hyperf\Process\AbstractProcess` 的子類,並實現接口方法 `handle(): void`,方法內實現您的邏輯代碼,我們通過代碼來舉例: ```php 使用 `#[Process]` 註解時需 `use Hyperf\Process\Annotation\Process;` 命名空間; ## 為進程啓動加上條件 有些時候,並不是所有時候都應該啓動一個自定義進程,一個自定義進程的啓動與否可能會根據某些配置或者某些條件來決定,我們可以通過在自定義進程類內重寫 `isEnable(): bool` 方法來實現,默認返回 `true`,即會跟隨服務一同啓動,如方法返回 `false`,則服務啓動時不會啓動該自定義進程。 ```php container->get(StdoutLoggerInterface::class); while (true) { $redis = $this->container->get(\Redis::class); $count = $redis->llen('queue:failed'); if ($count > 0) { $logger->warning('The num of failed queue is ' . $count); } sleep(1); } } } ```