61 lines
1.7 KiB
PHP
Executable File
61 lines
1.7 KiB
PHP
Executable File
#!/usr/bin/env php
|
|
<?php
|
|
/**
|
|
* PHP 文件监控脚本 - 用于开发环境热更新
|
|
* 监控 PHP 文件变化并自动触发浏览器刷新
|
|
*/
|
|
|
|
echo "🔥 PHP 热更新监控已启动...\n";
|
|
echo "监控目录: " . __DIR__ . "\n";
|
|
echo "按 Ctrl+C 停止监控\n\n";
|
|
|
|
$watchedFiles = [];
|
|
$extensions = ['php', 'html', 'css', 'js'];
|
|
|
|
function scanDirectory($dir, $extensions) {
|
|
$files = [];
|
|
$iterator = new RecursiveIteratorIterator(
|
|
new RecursiveDirectoryIterator($dir, RecursiveDirectoryIterator::SKIP_DOTS)
|
|
);
|
|
|
|
foreach ($iterator as $file) {
|
|
if ($file->isFile()) {
|
|
$ext = strtolower($file->getExtension());
|
|
if (in_array($ext, $extensions)) {
|
|
$files[$file->getPathname()] = $file->getMTime();
|
|
}
|
|
}
|
|
}
|
|
return $files;
|
|
}
|
|
|
|
// 初始化文件列表
|
|
$watchedFiles = scanDirectory(__DIR__, $extensions);
|
|
|
|
echo "正在监控 " . count($watchedFiles) . " 个文件...\n\n";
|
|
|
|
while (true) {
|
|
sleep(1);
|
|
|
|
$currentFiles = scanDirectory(__DIR__, $extensions);
|
|
|
|
// 检查文件变化
|
|
foreach ($currentFiles as $file => $mtime) {
|
|
if (!isset($watchedFiles[$file])) {
|
|
echo "[" . date('H:i:s') . "] ✨ 新文件: " . basename($file) . "\n";
|
|
$watchedFiles[$file] = $mtime;
|
|
} elseif ($watchedFiles[$file] !== $mtime) {
|
|
echo "[" . date('H:i:s') . "] 🔄 文件已更新: " . basename($file) . "\n";
|
|
$watchedFiles[$file] = $mtime;
|
|
}
|
|
}
|
|
|
|
// 检查删除的文件
|
|
foreach ($watchedFiles as $file => $mtime) {
|
|
if (!isset($currentFiles[$file])) {
|
|
echo "[" . date('H:i:s') . "] 🗑️ 文件已删除: " . basename($file) . "\n";
|
|
unset($watchedFiles[$file]);
|
|
}
|
|
}
|
|
}
|