ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
> 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); } } } ~~~