Changeset 18695 for branches/version-2_4-dev
- Timestamp:
- 2010/06/14 12:25:41 (13 years ago)
- bzr:base-revision:
- ohkouchi@loop-az.jp-20100611084315-pt2z8gst03tpwm7n
- bzr:committer:
- Kentaro Ohkouchi <ohkouchi@loop-az.jp>
- bzr:file-ids:
data/class/util/GC_Utils.php 15078@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fdata%2Fclass%2Futil%2FGC_Utils.php- bzr:mapping-version:
- v4
- bzr:repository-uuid:
- 1e3b908f-19a9-db11-a64c-001125224ba8
- bzr:revision-id:
- ohkouchi@loop-az.jp-20100614032538-fsavhgt9ckv920u9
- bzr:revno:
- 1967
- bzr:revprop:branch-nick:
- branches/version-2_4-dev
- bzr:root:
- branches/version-2_4-dev
- bzr:text-parents:
data/class/util/GC_Utils.php svn-v4:1e3b908f-19a9-db11-a64c-001125224ba8:branches/version-2_4-dev:18493- bzr:timestamp:
- 2010-06-14 12:25:38.674999952 +0900
- bzr:user-agent:
- bzr2.1.1+bzr-svn1.0.2
- svn:original-date:
- 2010-06-14T03:25:38.675000Z
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/version-2_4-dev/data/class/util/GC_Utils.php
r18493 r18695 160 160 /** 161 161 * ログローテーション機能 162 * 162 * XXX この類のローテーションは通常 0 開始だが、本実装は 1 開始である。 163 163 * @param integer $max_log 最大ファイル数 164 164 * @param integer $max_size 最大サイズ … … 168 168 function gfLogRotation($max_log, $max_size, $path) { 169 169 170 // ディレクトリ名を取得 171 $dirname = dirname($path); 172 // ファイル名を取得 173 $basename = basename($path); 174 //umask値を777にする。スクリプトが終われば元のumask値に戻る。 175 umask(0); 176 // ファイルが最大サイズを超えていないかチェック 177 if(filesize($path) > $max_size) { 178 if ($dh = opendir($dirname)) { 179 while (($file = readdir($dh)) !== false) { 180 // ログローテーションにて作成されたファイルを取得 181 if(ereg("^". $basename . "\." , $file)) { 182 $arrFile[] = $file; 183 } 184 } 185 186 // ローテーションにて作成されたログファイルが存在しない場合は実行しない 187 if(is_array($arrFile)) { 188 // ソートを行う 189 natcasesort($arrFile); 190 191 // ファイルログが最大個数なら以上なら古いファイルから削除する 192 $count = count($arrFile); 193 if($count >= $max_log) { 194 $diff = $count - $max_log; 195 for($i = 0; $diff >= $i ; $i++) { 196 unlink($dirname . "/" . array_pop($arrFile)); 197 } 198 } 199 200 // ログファイルの添え字をずらす 201 $count = count($arrFile); 202 for($i = $count; 1 <= $i; $i--) { 203 $move_number = $i + 1; 204 if(file_exists("$path.$move_number")) { 205 unlink("$path.$move_number"); 206 } 207 copy("$dirname/" . $arrFile[$i - 1], "$path.$move_number"); 208 } 209 } 210 $ret = copy($path, "$path.1"); 211 212 // 新規ログファイルを作成 213 if($ret) { 214 unlink($path); 215 touch($path); 216 chmod($path, 0666); 217 } 170 // ファイルが最大サイズを超えていない場合、終了 171 if (filesize($path) <= $max_size) return; 172 173 // アーカイブのインクリメント(削除を兼ねる) 174 for ($i = $max_log; $i >= 2; $i--) { 175 $path_old = "$path." . ($i - 1); 176 $path_new = "$path.$i"; 177 if (file_exists($path_old)) { 178 rename($path_old, $path_new); 218 179 } 219 180 } 181 182 // 現在ファイルのアーカイブ 183 rename($path, "$path.1"); 220 184 } 221 185
Note: See TracChangeset
for help on using the changeset viewer.