ホームページ  >  記事  >  php教程  >  PHP は定期的にフォルダー内のファイルを削除します (キャッシュ ファイルをクリアします)。

PHP は定期的にフォルダー内のファイルを削除します (キャッシュ ファイルをクリアします)。

WBOY
WBOYオリジナル
2016-06-13 11:56:101231ブラウズ

それでは、一時フォルダーを自動的にクリーンアップする方法はあるのでしょうか?

次のコードは、フォルダー内のファイルを定期的にクリーンアップする単純な 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.txt ファイルを作成し、その中に 1 または 0 を入力します。 「0」は実行を停止することを意味します。 「1」は実行を継続することを意味します。このようにして、起動と停止を行うことができます。

コードをコピー コードは次のとおりです。


$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)>


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。