好了 廢話很少說 直接上代碼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