ログファイルを日付ごとに作成し、現在の日付と比較し先日のファイルはgzipで圧縮
3カ月前の物は削除するようにしたいです。
毎日日付が変わる、12時に1回更新を行い
上記の挙動を取れればOKです。
2018-10-03 00:00 に変わると
2018-10-02 00:00 のファイルがgz圧縮され
2018-07-03 00:00 (3カ月前)以下のファイルが全て削除されるような
形にしたいです。
対象拡張子は、.log .phpファイルとしています。
.phpでする理由は、.phpで書いているファイルを圧縮したい時もあると思うので
追加しています。
logファイルなどを扱うのは初めてで、よくある機能だと聞いたので
作ってみようと思ったのですが、どういう処理を入れるべきかわからなくなりました。
わかる方いらっしゃいましたら、教えて頂けると幸いです。
今回ログファイルの生成は無視するものとします。
ログファイル名のルール
log-[日付 Y-m-d].php
ディレクトリ構成
????sample_log
∟index.php
∟????log
∟log-2018-10-02.php
∟log-2018-10-01.php
etc..
php
1<?php 2 3try{ 4 5 $phar = new PharData('log-2018-10-02.php'); 6 7 $today = 'log-'.date('Y-m-d', strtotime('-1 day')).'.php'; // 昨日の日付 8 9 $filename = array(); 10 11 //ログディレクトリのファイルを全て取得 12 foreach(glob('log/*') as $file){ 13 if(is_file($file)){ 14 $filename[] = htmlspecialchars($file); 15 } 16 } 17 18 //ファイル名を整形 19 foreach($filename as $log_date) 20 { 21 list($log, $date) = explode("/", $log_date); 22 $file_date[] = $date; 23 } 24 25 //先日の日付と一致するものをgzipとして圧縮 26 if(in_array($today,$file_date)) 27 { 28 echo "先日のファイルを圧縮しました。"; 29 $phar->compress(Phar::GZ); 30 31 } 32 33 34 //3カ月以上前の処理 35 36} 37catch (Exception $e) 38{ 39 // エラーがあった場合ここに飛びます 40 echo "Exception : " . $e; 41} 42 43 44 45
回答2件
あなたの回答
tips
プレビュー