zoukankan      html  css  js  c++  java
  • Workerman-文件监控-牛刀小试

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

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

     1 use WorkermanWorker;
     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     WorkermanLibTimer::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
    ";
    34             //windows 必须屏蔽这行代码 不然报错
    35            // posix_kill(posix_getppid(), SIGUSR1);
    36             $last_mtime = $file->getMTime();
    37             break;
    38         }
    39     }
    40 }

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

  • 相关阅读:
    基于xtrabackup的PointInTime Recovery备份恢复
    使用折半查找法删除
    五月第二周
    MySQL 5.5 外键不能引用分区表主键
    MYSQL 登录漏洞,Percona Server说明
    Detectron2学习笔记 Sanny.Liu
    取客户MAP地址
    DataReader转实体<T>
    从程序员到翻译的感受
    .net中的浅拷贝和深拷贝
  • 原文地址:https://www.cnblogs.com/phpnan/p/6233879.html
Copyright © 2011-2022 走看看