Workerman-文件监控-牛刀小试

Posted 风动随心

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Workerman-文件监控-牛刀小试相关的知识,希望对你有一定的参考价值。

今天学习了workerman , 初次体验了定时器的效果,结合文档。弄了个文件监控。

好了 废话不多说 直接上代码

 1 use Workerman\\Worker;
 2 require_once __DIR__ . \'/Workerman/Autoloader.php\';
 3 $monitor_dir = realpath(__DIR__.\'/..\');
 4 $worker = new Worker();
 5 $worker->name = \'FileMonitor\';
 6 $worker->reloadable = false;
 7 $last_mtime = time();
 8 $worker->onWorkerStart = function ($task) {
 9      global $monitor_dir;
10     //每隔2.5 秒 执行一次
11     $time_interval = 2.5;
12     \\Workerman\\Lib\\Timer::add($time_interval,"check_files_change",array($monitor_dir));
13 };
14 Worker::runAll();
15 
16 /**
17  * 定时执行函数
18  */
19 function check_files_change($monitor_dir) {
20     global $last_mtime;
21 
22     // spl 迭代器 php > 5.5 以上 链接 http://php.net/manual/zh/class.recursivedirectoryiterator.php
23     $dir_iterator = new RecursiveDirectoryIterator($monitor_dir);
24     $iterator = new RecursiveIteratorIterator($dir_iterator);
25     foreach ($iterator as $file) {
26         // 只对 后缀为php 的文件监控
27         if(pathinfo($file, PATHINFO_EXTENSION) != \'php\') {
28             continue;
29         }
30 
31         // 当前时间和文件最后一次更新文件 比较
32         if($last_mtime < $file->getMTime()) {
33             echo $file." update and reload\\n";
34             //windows 必须屏蔽这行代码 不然报错
35            // posix_kill(posix_getppid(), SIGUSR1);
36             $last_mtime = $file->getMTime();
37             break;
38         }
39     }
40 }

 

运行:在目录里面新建或添加文字

 

以上是关于Workerman-文件监控-牛刀小试的主要内容,如果未能解决你的问题,请参考以下文章

前端试题-小试牛刀

使用workerman实现在线聊天-第一版

zabbix 告警小试

续安装好composer和workerman之后;TP5运行workerman的操作

小试 Xcode 逆向:App 内存监控原理初探

Workerman自动加载等问题