Workerman-文件監控-牛刀小試

今天學習了workerman , 初次體驗了定時器的效果,結合文檔。弄了個文件監控。

好了 廢話很少說 直接上代碼php

 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 }

 

運行:在目錄裏面新建或添加文字windows

相關文章
相關標籤/搜索