Update PHP test app - 2026-01-21 13:37:13
This commit is contained in:
60
php-test/watch.php
Executable file
60
php-test/watch.php
Executable file
@@ -0,0 +1,60 @@
|
||||
#!/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]);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user