国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

webman監(jiān)聽的文件夾里刪除文件沒有熱重啟

hot12121212

問題描述

監(jiān)聽的文件夾里刪除文件沒有熱重啟 ,這個應該怎么解決

101 1 0
1個回答

qq7467466

剛剛追了一下walkor的源碼, 發(fā)現(xiàn)校驗文件熱重啟的邏輯只是對比了一下文件的最后更新時間, 這個并不包括 文件的新增, 改名, 刪除等邏輯, 如果要想實現(xiàn)相應的邏輯, 需要自行調整代碼

public function checkFilesChange($monitorDir): bool
    {
        static $lastMtime, $tooManyFilesCheck;
        if (!$lastMtime) {
            $lastMtime = time();
        }
        clearstatcache();
        if (!is_dir($monitorDir)) {
            if (!is_file($monitorDir)) {
                return false;
            }
            $iterator = [new SplFileInfo($monitorDir)];
        } else {
            // recursive traversal directory
            $dirIterator = new RecursiveDirectoryIterator($monitorDir, FilesystemIterator::SKIP_DOTS | FilesystemIterator::FOLLOW_SYMLINKS);
            $iterator = new RecursiveIteratorIterator($dirIterator);
        }
        $count = 0;
        foreach ($iterator as $file) {
            $count ++;
            /** var SplFileInfo $file */
            if (is_dir($file->getRealPath())) {
                continue;
            }
            // check mtime 主要這里校驗了最后一次更新的時間
            if (in_array($file->getExtension(), $this->extensions, true) && $lastMtime < $file->getMTime()) {
                $lastMtime = $file->getMTime();
                if (DIRECTORY_SEPARATOR === '/' && isset($this->loadedFiles[$file->getRealPath()])) {
                    echo "$file updated but cannot be reloaded because only auto-loaded files support reload.\n";
                    continue;
                }
                $var = 0;
                exec('"'.PHP_BINARY . '" -l ' . $file, $out, $var);
                if ($var) {
                    continue;
                }
                echo $file . " updated and reload\n";
                // send SIGUSR1 signal to master process for reload
                if (DIRECTORY_SEPARATOR === '/') {
                    posix_kill(posix_getppid(), SIGUSR1);
                } else {
                    return true;
                }
                break;
            }
        }
        if (!$tooManyFilesCheck && $count > 1000) {
            echo "Monitor: There are too many files ($count files) in $monitorDir which makes file monitoring very slow\n";
            $tooManyFilesCheck = 1;
        }
        return false;
    }
  • hot12121212 3天前

    OK 就怕后面升級 會覆蓋這個文件

  • qq7467466 3天前

    這個文件改動頻率很小, 如果害怕升級影響到這個文件, 可以自行繼承一下這個文件或者重命名一份文件, 然后在config/process.php 調整的你的監(jiān)控 handler就可以了 app\process\Monitor::class,

  • hot12121212 3天前

    是個不錯的想法 等下試試

??