CI 코드

제목 CI 압축 프로그램
글쓴이 준이 작성시각 2010/12/27 10:31:36
댓글 : 2 추천 : 0 스크랩 : 0 조회수 : 16626   RSS

이하 system 폴더를 압축 하는 프로그램 입니다.

(php 파일만 수정, 기타 파일 복사)

source 폴더와 같은 폴더에 복사 하셔서 실행 하시면 됩니다.

사용 방법은 다음과 같습니다.

// system 디렉토리, 목표 디렉토리, 압축 사용 여부

ci_min('source', 'target', true);

첫번째 파라미터는 소스 디렉토리 입니다.

두번째 파라미터에서 값이 비어 있으면 자동으로 target 폴더를 생성 합니다.

세번째 파라미터에서 true - php_strip_whitespace + zlib 사용, false - php_strip_whitespace만 사용

// 203 files

// 압축 하기 전                      1,810,599 bytes

// php_strip_whitespace       867,106 bytes

// gzip = true                       435,844 bytes

<?php
$source_dir = './source'; // source directory
$target_dir = './target'; // target directory
 
$file_count  = 0;
$file_size_o = 0;
$file_size_n = 0;

if (!file_exists($source_dir) || !is_dir($source_dir)) {
    exit('please check source directory.');
}

if (!is_dir($target_dir)) {
    exit('please check target directory.');
}

if (!file_exists($target_dir)) {
    mkdir($target_dir);
}

ci_min($source_dir, $target_dir, false);
 
echo "\n".'file_count: '.$file_count."\n";
echo 'file_size: '.number_format($file_size_o).' -> '.number_format($file_size_n)."\n\n";
 
function ci_min($src, $dst, $gzip = true)
{
    if (!is_dir($dst)) {
        mkdir($dst);
    }

    global $file_count, $file_size_o, $file_size_n;
    $dir = opendir($src);
 
    @mkdir($dst);

    while (false !== ($file = readdir($dir))) {
        if (($file != '.') && ($file != '..') && ($file != '.DS_Store')) {
            if (is_dir($src.'/'.$file)) {
                ci_min($src.'/'.$file, $dst.'/'.$file, $gzip);
            } else {
                if (substr($file, -4) == '.php') {
                    if ($gzip == true) {
                        file_put_contents($dst.'/'.$file, "<?php eval(gzuncompress(base64_decode('".base64_encode(gzcompress(trim(substr(php_strip_whitespace($src.'/'.$file), 5)), 9))."')));");
                    } else {
                        file_put_contents($dst.'/'.$file, trim(php_strip_whitespace($src.'/'.$file)));
                    }

                    echo "Compacting " . $src.'/'.$file . "\n";
                } else {
                    copy($src.'/'.$file, $dst.'/'.$file);
                }

                $file_count++;
                $file_size_o += filesize($src.'/'.$file);
                $file_size_n += filesize($dst.'/'.$file);
            }
        }
    }
    closedir($dir);
}

 

 다음글 ci memo (10)
 이전글 듬직이님의 헬퍼 ip 부분 추가.

댓글

변종원(웅파) / 2010/12/27 17:37:43 / 추천 0
유용한 프로그램 감사합니다.
무명의시인2 / 2010/12/29 08:29:16 / 추천 0
좋은 프로그램 감사합니다 ㅎㅎ