easyswoole/file-watcher
Composer 安装命令:
composer require easyswoole/file-watcher
包简介
README 文档
README
使用规则
WatchRule
监控目录:
$watchRule = new \EasySwoole\FileWatcher\WatchRule(EASYSWOOLE_ROOT."/App");
指定忽略目录:
/**@var \EasySwoole\FileWatcher\WatchRule $watchRule **/ $watchRule->setIgnorePaths([EASYSWOOLE_ROOT."/App/Api", EASYSWOOLE_ROOT."/App/Admin"]);
指定忽略文件:
/**@var \EasySwoole\FileWatcher\WatchRule $watchRule **/ $watchRule->setIgnoreFiles([EASYSWOOLE_ROOT."/App/Api/Teacher.php", EASYSWOOLE_ROOT."/App/Admin/Teacher.php"]);
指定匹配后缀:
/**@var \EasySwoole\FileWatcher\WatchRule $watchRule **/ $watchRule->setType($watchRule::SCAN_TYPE_SUFFIX_MATCH); //$watchRule->setType($watchRule::SCAN_TYPE_IGNORE_SUFFIX); $watchRule->setSuffix(['php']);
type为SCAN_TYPE_SUFFIX_MATCH时,只匹配后缀必须在suffix规则数组的文件。 type为SCAN_TYPE_IGNORE_SUFFIX时,会忽略掉后缀在suffix规则数组的文件。
FileWatcher
设置监控程序:
$fileWatcher = new \EasySwoole\FileWatcher\FileWatcher(); $fileWatcher->setScannerDriver(\EasySwoole\FileWatcher\Scanner\Inotify::class); $fileWatcher->setScannerDriver(\EasySwoole\FileWatcher\Scanner\FileScanner::class);
二选一 不调用此方法 存在inotify扩展默认为Inotify::class反之FileScanner::class
增加监控规则:
/**@var \EasySwoole\FileWatcher\FileWatcher $fileWatcher **/ $fileWatcher->addRule(new \EasySwoole\FileWatcher\WatchRule(__DIR__)); $fileWatcher->addRule(new \EasySwoole\FileWatcher\WatchRule(EASYSWOOLE_ROOT. '/App'));
可进行多次调用 对不同目录设置不同的规则
设置异常回调:
/**@var \EasySwoole\FileWatcher\FileWatcher $fileWatcher **/ $fileWatcher->setOnException(function (\Throwable $throwable){ });
设置检测周期(默认1000ms):
/**@var \EasySwoole\FileWatcher\FileWatcher $fileWatcher **/ $fileWatcher->setCheckInterval(1000);
设置触发回调(文件有变化):
/**@var \EasySwoole\FileWatcher\FileWatcher $fileWatcher **/ $fileWatcher->setOnChange(function (array $list, \EasySwoole\FileWatcher\WatchRule $rule){ // list为变化的文件列表 });
启动(swoole服务中使用):
/**@var \EasySwoole\FileWatcher\FileWatcher $fileWatcher **/ /**@var \Swoole\Server $server **/ $fileWatcher->attachServer($server);
EasySwoole中用于热重启
例如在Easyswoole开发模式中,我们希望当有代码变动的时候,实现Server重启,示例代码如下:
namespace EasySwoole\EasySwoole; use EasySwoole\EasySwoole\AbstractInterface\Event; use EasySwoole\EasySwoole\Swoole\EventRegister; use EasySwoole\FileWatcher\FileWatcher; use EasySwoole\FileWatcher\WatchRule; class EasySwooleEvent implements Event { public static function initialize() { date_default_timezone_set('Asia/Shanghai'); } public static function mainServerCreate(EventRegister $register) { $watcher = new FileWatcher(); $rule = new WatchRule(EASYSWOOLE_ROOT."/App"); $watcher->addRule($rule); $watcher->setOnChange(function (){ Logger::getInstance()->info('file change ,reload!!!'); ServerManager::getInstance()->getSwooleServer()->reload(); }); $watcher->attachServer(ServerManager::getInstance()->getSwooleServer()); } }
注意,reload仅仅针对Worker进程加载的代码有效
easyswoole/file-watcher 适用场景与选型建议
easyswoole/file-watcher 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 30.12k 次下载、GitHub Stars 达 3, 最近一次更新时间为 2020 年 12 月 08 日, 在 PHP 生态内属于活跃度较高的组件。
我们在过去多个企业项目中使用过 easyswoole/file-watcher 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 easyswoole/file-watcher 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
统计信息
- 总下载量: 30.12k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 3
- 点击次数: 3
- 依赖项目数: 11
- 推荐数: 0
其他信息
- 授权协议: Apache-2.0
- 更新时间: 2020-12-08