phpでサーバーにあるファイルを日付毎に分類する
サーバーの特定のディレクトリにあるファイルを作成日毎に整理したくて作成したので一応メモ。
昨日作成されたファイルをディレクトリに移動するphp
#!/usr/local/bin/php-cgi
<?php
// 移動するファイルが存在するディレクトリ(work)の相対パス
$work_dir = "../work";
// 昨日の日付を取得(数字8桁)
$date_dir = date("Ymd", strtotime("-1 day"));
echo $date_dir; //デバッグ用
//ディレクトリを作る
if (mkdir($work_dir."/".$date_dir, 0755)) {
	echo $date_dir."ディレクトリ作成成功<br/ >";
} else {
	echo $date_dir."ディレクトリ作成失敗<br/ >";
}
//作業ディレクトリのファイルのタイムスタンプが$date_dirと一致するものを移動する
if (is_dir($work_dir)) {
	if ($dir_handle = opendir($work_dir)) { 
		while (false !== ($file = readdir($dir_handle))) {
			if ($file != "." && $file != ".." && is_dir($work_dir."/".$file) == false) {
				if (date("Ymd", filemtime($work_dir."/".$file)) == $date_dir) {
					if (rename($work_dir."/".$file, $work_dir."/".$date_dir."/".$file)) {
						echo "ファイル移動成功:".$file."<br/ >";
					} else {
						echo $file."の移動は失敗<br/ >";
					}
				}
			}
		}
	closedir($handle);
	}
}
?>
あとは、このファイルをサーバーにアップロードして、cronで毎日夜中に自動実行する。
さくらのレンタルサーバーのcronはこんな感じで。
cd /home/●●●/work_php; /usr/local/bin/php dairy_file_move.php●●●はアカウント名
参考リンク
- https://www.php.net/manual/ja/function.is-dir.php
- https://www.php.net/manual/ja/control-structures.while.php
- https://www.php.net/manual/ja/function.strtotime.php
- https://www.php.net/manual/ja/function.mkdir.php
- https://www.php.net/manual/ja/language.operators.logical.php
- https://www.php.net/manual/ja/language.operators.comparison.php
- https://www.php.net/manual/ja/function.time.php
- https://www.php.net/manual/ja/function.date.php
- https://www.php.net/manual/ja/function.readdir.php
- http://www.php-ref.com/b2api/02_mkdir.html
- https://qiita.com/sugar020855/items/bbfe3f8275cb65500d69
- http://ysklog.net/php/2332.html
- http://ysklog.net/php/2333.html
- https://www.flatflag.nir87.com/copy-895
- http://raining.bear-life.com/linux/cron(クーロン)でphpを自動実行する

 
