Changeset 18805


Ignore:
Timestamp:
2010/09/16 19:12:12 (11 years ago)
Author:
Seasoft
Message:

#809(ログローテーションの Windows 対応) 実装

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/version-2_5-dev/data/class/util/GC_Utils.php

    r18701 r18805  
    160160    /** 
    161161     * ログローテーション機能 
     162     * 
    162163     * XXX この類のローテーションは通常 0 開始だが、本実装は 1 開始である。 
     164     * この中でログ出力は行なわないこと。(無限ループの懸念あり) 
    163165     * @param integer $max_log 最大ファイル数 
    164166     * @param integer $max_size 最大サイズ 
     
    170172        // ファイルが最大サイズを超えていない場合、終了 
    171173        if (filesize($path) <= $max_size) return; 
    172          
    173         // アーカイブのインクリメント(削除を兼ねる) 
     174 
     175        // Windows 版 PHP への対策として明示的に事前削除 
     176        $path_max = "$path.$max_log"; 
     177        if (file_exists($path_max)) { 
     178            $res = unlink($path_max); 
     179            // 削除に失敗時した場合、ログローテーションは見送り 
     180            if (!$res) return; 
     181        } 
     182 
     183        // アーカイブのインクリメント 
    174184        for ($i = $max_log; $i >= 2; $i--) { 
    175185            $path_old = "$path." . ($i - 1); 
     
    179189            } 
    180190        } 
    181          
     191 
    182192        // 現在ファイルのアーカイブ 
    183193        rename($path, "$path.1"); 
Note: See TracChangeset for help on using the changeset viewer.