hyperf-process进程退出后没有自启

hyperf 2.1+, php 7.3+, swoole 4.5+
process定义如下,默认随服务启动:

<?php
namespace App\Process;

use Hyperf\Process\Annotation\Process;


/**
 * @Process(name="filter_shjysl")
 */
class FilterShjyslProcess extends FilterProcess
{
    public $name='filter_shjysl';

}

发现process进程退出后没有自启,手动重启hyperf服务后进程filter_shjysl才重新启动

image.png

程序有个定时重启机制,每隔一段时间就break退出while循环,我的疑问,为什么这里process进程不会自启呢?

while (ProcessManager::isRunning()) {
    ...
    if (‘需要重启’) {
          break;
    }
}

sleep(5);
阅读 4.4k
2 个回答

自定义进程在启动时可以设置启动条件

/**
 * @Process(name="CustomerMessageProcess")
 */
class CustomerMessageProcess extends AbstractProcess
{
    /**
     * @inheritDoc
     */
    public function handle(): void
    {
       // 具体的逻辑代码
    }
    
    
    public function isEnable($server): bool
    {
        // 启动条件
        return (bool)(env('ENABLE_CUSTOMER', true));
    }
}

自定义进程是每5秒钟执行一次,如果自定义进程执行的内容超过5秒钟,则会一直阻塞。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏