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-文件监控-牛刀小试的主要内容,如果未能解决你的问题,请参考以下文章