使用swoole制作evenloop文件更新监…
2017-06-12 17:13
218 查看
使用swoole的evenloop和php的inotify插件可以很方便的监控文件夹下的文件更新,后面也不用写死循环和sleep
如果使用原生的php是需要写while死循环和sleep。这样效率不是很高
$handleList = array();
//init
foreach ($this->_config["log_path"] as
$content) {
$folder =
$content["path"];
//if the
folder not exist
if
(!is_dir($folder)) {
mkdir($folder, true);
}
//创建一个inotify句柄
$handleList[$folder]["fd"] = inotify_init();
echo
"Listen the folder:" . $folder . PHP_EOL;
//监听文件,仅监听修改操作,如果想要监听所有事件可以使用IN_ALL_EVENTS
$handleList[$folder]["desc"] =
inotify_add_watch($handleList[$folder]["fd"], $folder,
IN_MODIFY);
//加入到swoole的事件循环中
swoole_event_add($handleList[$folder]["fd"], function ($fd) use
($folder) {
$events =
inotify_read($fd);
if ($events) {
var_dump($folder,$events);
foreach ($events as $event) {
//echo
"inotify Event :" . var_export($event, 1) . "\n";
}
}
});
后续记得后面不要调用sleep也无需while死循环
今天踩坑我在后面加了while(true){sleep(5);}死活不工作……后来问了峰哥……才知道丢人了……
这个效率很高…dora-rpc的日志收集就这么定了,我会做更多的测试后更新github
最后声明:这段代码的原始版本来自韩天峰的分享:http://my.oschina.net/matyhtf/blog/343508
如果使用原生的php是需要写while死循环和sleep。这样效率不是很高
$handleList = array();
//init
foreach ($this->_config["log_path"] as
$content) {
$folder =
$content["path"];
//if the
folder not exist
if
(!is_dir($folder)) {
mkdir($folder, true);
}
//创建一个inotify句柄
$handleList[$folder]["fd"] = inotify_init();
echo
"Listen the folder:" . $folder . PHP_EOL;
//监听文件,仅监听修改操作,如果想要监听所有事件可以使用IN_ALL_EVENTS
$handleList[$folder]["desc"] =
inotify_add_watch($handleList[$folder]["fd"], $folder,
IN_MODIFY);
//加入到swoole的事件循环中
swoole_event_add($handleList[$folder]["fd"], function ($fd) use
($folder) {
$events =
inotify_read($fd);
if ($events) {
var_dump($folder,$events);
foreach ($events as $event) {
//echo
"inotify Event :" . var_export($event, 1) . "\n";
}
}
});
后续记得后面不要调用sleep也无需while死循环
今天踩坑我在后面加了while(true){sleep(5);}死活不工作……后来问了峰哥……才知道丢人了……
这个效率很高…dora-rpc的日志收集就这么定了,我会做更多的测试后更新github
最后声明:这段代码的原始版本来自韩天峰的分享:http://my.oschina.net/matyhtf/blog/343508
相关文章推荐
- ---===HTML帮助文件的制作和使用(new)===---
- PB使用WININET的FTP方式自动更新(三、获得要更新的文件数)
- 使用Microsoft HTML Help Workshop制作CHM帮助文件
- 使用用Ghost制作的win2k3和winxp文件具有相同的SID的解决办法
- 使用公文包自动同步更新文件
- 使用OleDbCommand对象更新SQL Server中的二进制文件
- 使用jsmooth 制作exe文件
- 扩展使用.INF文件-制作免安装的绿色软件
- 扩展使用.INF文件-制作免安装的绿色软件
- 使用Eclipse制作可执行jar文件
- 对使用Delphi制作DLL复用文件的建议
- 使用Real Producer Plus 10 制作流媒体文件
- 非java.util.zip,使用ant.jar制作zip压缩文件,以及相关中文解决方法
- 在DTable中的新增和更新界面使用模板文件
- 使用jsmooth 制作exe文件
- 使用PB调用API自动更新(非FTP模式)(六、AUTODOWN.INI文件)
- 使用C编译器制作平坦二进制文件[修改增添版]
- 使用用Ghost制作的win2k3和winxp文件具有相同的SID的解决办法
- 使用SWT制作不规则窗体(已更新)
- 使用Eclipse制作可执行jar文件