Hyperf热重启

在 Hyperf 框架中实现热重启(Hot Reload)可以通过 hyperf/watcher 组件来实现。这个组件会监控文件的变化,并在检测到变化时自动重启服务,从而实现热重启功能。以下是详细的步骤:

1、 安装 hyperf/watcher 组件

首先,在你的 Hyperf 项目中安装 hyperf/watcher 组件。打开终端,进入你的 Hyperf 项目目录,并运行以下命令:

composer require hyperf/watcher

2、生成配置文件

安装完成后,需要配置生成watcher配置文件

php bin/hyperf.php vendor:publish hyperf/watcher

生成的配置文件在根目录.watcher.php,(如果文件不存在,可以手动创建),添加或修改以下配置:

<?php

declare(strict_types=1);

use Hyperf\Watcher\Driver\ScanFileDriver;

return [
    'driver' => ScanFileDriver::class,
    'bin' => 'php',
    'watch' => [
        'dir' => ['app', 'config'],
        'file' => ['.env'],
        'scan_interval' => 2000,
    ],
];
配置参数详解:
1、driver 
  • 含义:指定文件变化监控的驱动。
  • 默认值Hyperf\Watcher\Driver\ScanFileDriver::class
  • 解释ScanFileDriver 是 Hyperf 提供的一个驱动,它会通过扫描文件的变化来触发热重启。你也可以自定义驱动实现更复杂的文件变化监控逻辑。
2、bin
  • 含义:指定 PHP 可执行文件的路径。
  • 默认值'php'
  • 解释:用于指定运行 PHP 脚本时使用的 PHP 可执行文件。如果你的 PHP 安装路径不在系统的 PATH 环境变量中,或者你有多个 PHP 版本并且需要指定其中一个,可以在这里指定完整路径,例如 /usr/local/bin/php
3、watch
  • 含义:定义需要监控的目录、文件和扫描间隔。
    子参数详解
  •  dir
    • 解释:这里指定的目录中的文件发生变化时,会触发 Watcher 的重启逻辑。一般来说,包含应用程序代码和配置文件的目录是需要监控的。
    • 默认值['app', 'config']
    • 含义:需要监控的目录列表。
  • file
    • 含义:需要监控的具体文件列表。
    • 默认值['.env']
    • 解释:这里指定的文件发生变化时,会触发 Watcher 的重启逻辑。比如 .env 文件是存放环境变量配置的文件,通常在开发过程中也需要监控其变化。
  • scan_interval
    • 含义:文件扫描的间隔时间。
    • 默认值2000
    • 解释:指定扫描文件变化的时间间隔,单位为毫秒。这里设置为 2000 毫秒,即每 2 秒扫描一次文件变化。这个值可以根据实际需要进行调整,扫描间隔越短,变化检测的速度越快,但也会增加系统的负担。

3、启动Hyperf框架服务器

使用watcher启用Hyper服务器。运行一下命令:

 php bin/hyperf.php server:watch

4、测试热重启

编辑 appconfig 目录中的文件,并保存更改。你应该会看到 Watcher 自动检测到文件变化并重启 Hyperf 服务器。

注意事项

  • 热重启适用于开发环境,在生产环境中建议禁用以确保服务的稳定性。
  • 确保你的文件系统支持文件变化监控,例如 Linux 和 macOS 原生支持,而 Windows 可能需要额外的配置。

通过以上步骤,你可以在 Hyperf 框架中实现文件变化监控和自动热重启,提高开发效率。

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值