12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- <?php
- use Workerman\Worker;
- use Workerman\Lib\Timer;
- $monitor_dir = realpath(__DIR__.'/..');
- $worker = new Worker();
- $worker->name = 'FileMonitor';
- $worker->reloadable = false;
- $last_mtime = time();
- $worker->onWorkerStart = function()
- {
- global $monitor_dir;
-
- if(!Worker::$daemonize)
- {
-
- Timer::add(1, 'check_files_change', array($monitor_dir));
- }
- };
- function check_files_change($monitor_dir)
- {
- global $last_mtime;
-
- $dir_iterator = new RecursiveDirectoryIterator($monitor_dir);
- $iterator = new RecursiveIteratorIterator($dir_iterator);
- foreach ($iterator as $file)
- {
-
- if(pathinfo($file, PATHINFO_EXTENSION) != 'php')
- {
- continue;
- }
-
- if($last_mtime < $file->getMTime())
- {
- echo $file." update and reload\n";
-
- posix_kill(posix_getppid(), SIGUSR1);
- $last_mtime = $file->getMTime();
- break;
- }
- }
- }
|