それでは、一時フォルダーを自動的にクリーンアップする方法はあるのでしょうか?
次のコードは、フォルダー内のファイルを定期的にクリーンアップする単純な PHP コードです。
追記: このコードは、Web サイトが再起動されない場合は実行され続けるため、ローカル環境のテストにのみ使用されます。Web サイトではテストしないでください。
コードをコピー コードは次のとおりです。
ignore_user_abort(); //クライアントは切断されているため、スクリプトはバックグラウンドで実行を継続できます。
set_time_limit(0); //php.ini で設定されたスクリプトの実行時間制限を無視します。
$interval = 5*60; //実行時間を設定します。秒単位では、5 分は 5*60=300 です。
do{
$dir = "temp/" //一時ディレクトリの場所
$handle=opendir("{$dir}/");
while (false !== ($file=readdir($handle))) {
if ($file!="." && $file!=".." && !is_dir("{$dir) }/{$ file}")) {
@unlink ("{$dir}/{$file}");
}
}
closedir($handle); //によって閉じられますopendir() 関数 ディレクトリを開きます
sleep($interval); //サイクルの実行後、$interval 時間スリープし、スリープ終了後もスクリプトは実行を続けます
}while(true); /スクリプトの定期実行
コードをコピー コードは次のとおりです。
$flag = 1;実行フラグは 1 で、デフォルトでは実行されます。
ignore_user_abort(); //クライアントが切断されても、スクリプトはバックグラウンドで実行を継続できます。
set_time_limit(0); //スクリプトの実行時間を無視します。 php.ini で設定された制限
$interval = 5*60; //実行期間を秒単位で設定します。5 分は 5*60=300 です。
do{
$flagfile = "flag.txt"; //フラグはファイル「flag.txt」に配置されます。 「0」は実行の停止を意味し、「1」は実行の継続を意味します
if(file_exists($flagfile) && is_readable($flagfile)) { //ファイルの内容を読み取ります
$fh = fopen($flagfile," r ");
while (!feof($fh)) {
$flag = fgets($fh); //ストレージフラグ
}
fclose($fh);
}
$dir = "temp/"; //一時ディレクトリの場所
$handle=opendir("{$dir}/");
while (false !== ($file=readdir($)ハンドル))) {
if ($file!="." && $file!=".." && !is_dir("{$dir}/{$file}")) {
@unlink ( "{$dir}/{$file}");
}
}
closedir($handle) //opendir() 関数によって開かれたディレクトリを閉じます
sleep($interval) ; // サイクルの実行後、$interval 時間スリープします。スリープが終了した後、スクリプトは
}while($flag) を継続します。 php はフォルダーとそのファイルを削除します すべてのファイルを折りたたみます
function deldir ($dir) { // 最初にディレクトリ内のファイルを削除します:
$dh=opendir($dir);while ($file=readdir( $dh)) {
if($ file!="." && $file!="..") {
$fullpath=$dir."/".$file;
if(! is_dir($fullpath)) {
リンク解除 ($fullpath);
} else {
deldir($fullpath);
}
}
closedir($dh) );
// 現在のフォルダーを削除します :
if(rmdir($dir)) {
return true;
} else {
return
}
}
?>
例: 特定のフォルダー内のすべての「.svn」フォルダー (その内容を含む) を削除します。
コードをコピーします。 >
function delsvn($dir) { $dh=opendir($dir); //すべての「.svn」フォルダーを検索: while ($file=readdir($dh)) {
if($file!="." && $file!="..") {$ fullpath=$dir ."/".$file;
if(is_dir($fullpath)) {
if($file==".svn"){
delsvndir($fullpath); >}else{
delsvn($fullpath);
}
}
}
closedir($dh)
}
関数 delsvndir($svndir) ){
// 最初にディレクトリ内のファイルを削除します:
$dh=opendir($svndir);
while($file=readdir($dh)){
if($file! ="."&& $file!=".."){
$fullpath=$svndir."/".$file
if(is_dir($fullpath)){
delsvndir($fullpath; );
}else{
unlink($fullpath);
}
}
closedir($dh)// ディレクトリフォルダーを削除します
(rmdir($ svndir)){
return true;
}else{
return false; >//エコー $dir;
delsvn($dir)>