在 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、测试热重启
编辑 app
或 config
目录中的文件,并保存更改。你应该会看到 Watcher 自动检测到文件变化并重启 Hyperf 服务器。
注意事项
- 热重启适用于开发环境,在生产环境中建议禁用以确保服务的稳定性。
- 确保你的文件系统支持文件变化监控,例如 Linux 和 macOS 原生支持,而 Windows 可能需要额外的配置。
通过以上步骤,你可以在 Hyperf 框架中实现文件变化监控和自动热重启,提高开发效率。