php動態檢測資料夾更新並複製資料夾

2021-10-23 03:49:36 字數 1592 閱讀 7435

先說下我的應用場景,幫助大家看是否對自己有用。

所以我就想寫個指令碼,讓它自己檢測每次dist的變化(vue每次build,會先刪除舊的dist,然後重新生成),如果資料夾有變化,就自動把dist資料夾的內容複製乙份到hbuilder建立的專案資料夾下,以免去每次手動複製的麻煩。

思路如下:

1. 檢測要複製的目標資料夾是否存在(dist),如果不存在,就等3秒,然後跳過本次執行。如果資料夾存在,則獲取資料夾的建立時間。

2. 用本次獲取的資料夾建立時間與上次獲取的時間(存在session中)比較,如果時間一致,則跳過本次執行,如果不一致,則執行複製檔案操作。

3. 迴圈執行上述步驟,我設定的3秒執行一次。在每次執行完後必須執行下clearstatcache()函式。因為filectime()這個函式具有快取,必須要清下快取,不然每次獲取的時間都是乙個,我當初就卡這很久。關於clearstatcache()這個函式,具體可檢視php手冊。

4. 命令列模式下執行,讓它一直迴圈就行了,就會不停的自動檢測。

具體**如下:

<?php

session_start();

set_time_limit(0);

/** * 資料夾檔案拷貝

* * @param string $src **資料夾

* @param string $dst 目的地資料夾

* @return bool

*/function dir_copy($src = '', $dst = '')

$dir = opendir($src);

dir_mkdir($dst);

while (false !== ($file = readdir($dir)))

else}}

closedir($dir);

return true;}

/** * 建立資料夾

* * @param string $path 資料夾路徑

* @param int $mode 訪問許可權

* @param bool $recursive 是否遞迴建立

* @return bool

*/function dir_mkdir($path = '', $mode = 0777, $recursive = true)

return true;

}$src = "你的dist資料夾路徑";

$dst = "你要複製的路徑";

$_session['time'] = filectime($src);

ob_start();

while (1)

echo 'file: '.filectime($src);

echo "\n";

echo 'session: '.$_session['time'];

echo "\n";

ob_flush();

flush();

$lasttime = filectime($src);

if ($lasttime != $_session['time'])

sleep(3);

clearstatcache();

}

php 資料夾檔案拷貝和複製

php開發中常常對檔案進行操作,資料夾和檔案的拷貝,複製等。資料夾檔案拷貝 param string src 資料夾 param string dst 目的地資料夾 return bool function dir copy src dst dir opendir src dir mkdir dst...

檔案 資料夾複製

通道對通道複製效率高 param f1 原始檔 param f2 目的檔案 return throws exception public static long forchannel file f1,file f2 throws exception if inc.size inc.position ...

複製資料夾函式

函式名稱 copydir 函式功能 複製資料夾 函式返回 bool 如果是true,複製成功,否則失敗。引數說明 param cstring strsrcpath 源資料夾 param cstring strdstpath 目標資料夾 bool copydir cstring strsrcpath,...