> hyperf/process 可以添加一个用户自定义的工作进程,此函数通常用于创建一个特殊的工作进程,用于监控、上报或者其他特殊的任务。在 Server 启动时会自动创建进程,并执行指定的子进程函数,进程意外退出时,Server 会重新拉起进程。
> 比如定时器就是使用该方式实现的自定义进程,可以参考其代码
[TOC]
## 创建一个自定义进程
~~~
declare(strict_types=1);
namespace App\Process;
use Hyperf\Process\AbstractProcess;
use Hyperf\Process\Annotation\Process;
use Hyperf\Contract\StdoutLoggerInterface;
class DemoProcess extends AbstractProcess
{
public function handle(): void
{
$logger = $this->container->get(StdoutLoggerInterface::class);
while (true) {
$logger->warning('new date2: ' . date('Y-m-d H:i:s'));
sleep(1);
}
}
}
~~~
## 配置文件方式注册
> 配置文件:/config/autoload/processes.php
~~~
return [
\App\Process\DemoProcess::class,
];
~~~
## 注解方式注册 (推荐)
> 只需在自定义进程类上定义 @Process 注解,Hyperf 会收集并自动完成注册工作
~~~
declare(strict_types=1);
namespace App\Process;
use Hyperf\Process\AbstractProcess;
use Hyperf\Process\Annotation\Process;
use Hyperf\Contract\StdoutLoggerInterface;
/**
* @Process(name="demo_process")
*/
class DemoProcess extends AbstractProcess
{
public function handle(): void
{
$logger = $this->container->get(StdoutLoggerInterface::class);
while (true) {
$logger->warning('new date2: ' . date('Y-m-d H:i:s'));
sleep(1);
}
}
}
~~~