안녕하세요?
다음의 내용은 저 같이 개념없는 초보자를 위한
내용입니다.
따라서 자신이 전문가라고 생각하시면 고생스럽게 읽을 필요는 없습니다.
참고만 하시길 바랍니다.
주)**********오해의 소지를 없애기 위해서**************
함수 테스트에 약간의 어패가 있습니다.
즉, 하나의 함수에 대해서 그렇게 많이(100만 이상) 사용하지 않기 때문에
정확한 테스트는 아닙니다.
다만,
똑같은 기능을 하는 함수는 여러개 존재할 수 있는데,
자신이 만든 함수중 최적의 함수를 선택하는 하나의 방법일 뿐입니다.
저 같이 함수를 개념없이 만들다 보니 여러개의 비슷한 함수가 나오더군요.
한번 실행시 거의 차이가 없지만 비교적 덩치가 큰 함수라면 한번 생각해 볼만한
문제인것 같습니다.
[함수 테스트 목적 및 방법]
아래의 테스트는 아주 같단한 함수를 만들어 for()문을 100만회 이상 돌려 가장
빠른 함수를 선택하는 방법입니다.
[테스트에 전에]
일반적으로 PHP에서는 최대 스크립트 실행 시간을 30초로 설정되어 있습니다.
많은 회수의 for()문을 돌리면 30초가 넘어가는 경우가 많습니다.
이 때는 php.ini(php3.ini)에서
max_execution_time = 30
부분을 적당하게 수정하고 재가동했는데도 안되더군요...
다시 PHP를 컴파일해야 할듯.........
[테스트에 사용된 함수]
// 출처 : JSBOARD ......... 속도 테스트를 위해서
function get_microtime($old, $new) {
// 주어진 문자열을 나눔 (sec, msec으로 나누어짐)
$old = explode(" ", $old);
$new = explode(" ", $new);
$time[msec] = $new[0] - $old[0];
$time[sec] = $new[1] - $old[1];
if($time[msec] < 0) {
$time[msec] = 1.0 + $time[msec];
$time[sec]--;
}
$time = sprintf("%.2f", $time[sec] + $time[msec]);
return $time;
}
// 각 요일을 한글로 출력하는 함수
// $sub 변수가 있을 경우 자세하게(?) 출력
// $date 변수는 유닉스 timestamp 값이다.
function HDay_Others($date="0", $sub="0") {
if(!$date) { $date = time(); } // 특정 날짜가 없다면 현재시간을 $date로 정한다.
$date = date("w", $date); // 각 요일
if($sub) {
$date = eregi_replace("0", "일요일", $date);
$date = eregi_replace("1", "월요일", $date);
$date = eregi_replace("2", "화요일", $date);
$date = eregi_replace("3", "수요일", $date);
$date = eregi_replace("4", "목요일", $date);
$date = eregi_replace("5", "금요일", $date);
$date = eregi_replace("6", "토요일", $date);
} else {
$date = eregi_replace("0", "일", $date);
$date = eregi_replace("1", "월", $date);
$date = eregi_replace("2", "화", $date);
$date = eregi_replace("3", "수", $date);
$date = eregi_replace("4", "목", $date);
$date = eregi_replace("5", "금", $date);
$date = eregi_replace("6", "토", $date);
}
return $date;
}
// 각 요일을 한글로 출력하는 함수
// $sub 변수가 있을 경우 자세하게(?) 출력
// $date 변수는 유닉스 timestamp 값이다.
function HDay($date="0", $sub="0") {
if(!$date) { $date = time(); } // 특정 날짜가 없다면 현재시간을 $date로 정한다.
$date = date("w", $date); // 각 요일
if($date == 0 ) { $date = "일요일"; }
else if($date == 1 ) { $date = "월요일"; }
else if($date == 2 ) { $date = "화요일"; }
else if($date == 3 ) { $date = "수요일"; }
else if($date == 4 ) { $date = "목요일"; }
else if($date == 5 ) { $date = "금요일"; }
else { $date = "토"; }
if(!$sub) { $date = eregi_replace("요일", "", $date); }
return $date;
}
// switch() 문 사용시
function HDay_s($date="0", $sub="0") {
if(!$date) { $date = time(); }
$date = date("w", $date); // 각 요일
switch($date) {
case "0":
$date = "일요일"; break;
case "1":
$date = "월요일"; break;
case "2":
$date = "화요일"; break;
case "3":
$date = "수요일"; break;
case "4":
$date = "목요일"; break;
case "5":
$date = "금요일"; break;
case "6":
$date = "토요일"; break;
}
if(!$sub) { $date = eregi_replace("요일", "", $date); }
return $date;
}
// 파일 크기 출력 함수
// $bfsize 변수는 bytes 단위의 크기임
// JSBOARD에 있는 함수입니다.
function File_HSize($bfsize, $sub = "0") {
$bfsize_Bytes = number_format($bfsize); // 3자리를 기준으로 컴마를 사용한다.
if($bfsize >= 1024 && $bfsize < 1048576) { // KBytes 범위
$bfsize_KB = round($bfsize/1024);
$bfsize_KB = number_format($bfsize_KB);
if($sub) {
$bfsize = "$bfsize_KB KB($bfsize_Bytes Bytes)";
} else {
$bfsize = "$bfsize_KB KB";
}
} else if($bfsize >= 1048576) { // MB 범위
$bfsize_MB = round($bfsize/1048576);
$bfsize_MB = number_format($bfsize_MB);
if($sub) {
$bfsize = "$bfsize_MB MB($bfsize_Bytes Bytes)";
} else {
$bfsize = "$bfsize_MB MB";
}
} else {
$bfsize = "$bfsize_Bytes Bytes";
}
return $bfsize;
}
// 바로 앞의 File_HSize()함수와 비교하기 위해서
// 몇줄을 없애고 간략하게 정리(?)해 보았습니다.
function File_HSize_Others($bfsize, $sub = "0") {
$bfsize_Bytes = number_format($bfsize);.
if($bfsize >= 1024 && $bfsize < 1048576) { // KBytes 범위
$bfsize_KB = round($bfsize/1024);
$bfsize = number_format($bfsize_KB);
$bfsize = "$bfsize KB";
} else if($bfsize >= 1048576) { // MB 범위
$bfsize_MB = round($bfsize/1048576);
$bfsize = number_format($bfsize_MB);
$bfsize = "$bfsize MB";
} else {
$bfsize = "$bfsize_Bytes Bytes";
}
// 비트 연산이 아닌 논리연산으로 권장
if($sub && ($bfsize_KB || $bfsize_MB)) {
$bfsize = "$bfsize($bfsize_Bytes Bytes)";
}
return $bfsize;
}
// 테스트하지 않았지만 그냥 올려봅니다...
// 현재 제 게시판에 사용하는 함수임...........꽤 새벽에 오시는 분이 많더군요..
//
// 하루 24시간을 새벽/오전/오후/저녁의 시간대를 출력하는 함수
// $sub 변수가 없다면 단순하게 오전/오후로 출력함.
function HDay_AP($date="0", $sub="0") {
if(!$date) { $date = time(); }
$date = date("G", $date);
//$date = $date/6; // 하루를 6시간씩 4개로 나눈다..(새벽/오전/오후/저녁)
if($sub) {
if($date >= 0 && $date < 6) { $date = "새벽"; }
else if($date >= 6 && $date < 12) { $date = "오전"; }
else if($date >= 12 && $date < 18) { $date = "오후"; }
else { $date = "저녁"; }
} else {
if($date >= 0 && $date < 12) { $date = "오전"; }
else { $date = "오후"; }
}
return $date;
}
// 이 함수는 재미삼아 만들어본 함수입니다.
// 예전에 "허준" 드라마에서 "묘시에 탕약을 드실것이옵니다."
// 라는 대사에 대해서 "묘시"가 몇시인지 짐작이 가지 않아서...
//
// 하루 24시간을 12 시간대로 출력하는 함수
function HDay_12Z($date="0") {
if(!$date) { $date = time(); }
$date = date("G", $date);
//$date = $date/2; // 하루를 2시간씩 12개로 나눈다..(자시~해시까지)
if($date >= 1 && $date < 3) { $date = "寅時(인시)"; }
else if($date >= 3 && $date < 5 ) { $date = "卯時(묘시)"; }
else if($date >= 5 && $date < 7) { $date = "辰時(진시)"; }
else if($date >= 7 && $date < 7) { $date = "巳時(사시)"; }
else if($date >= 9 && $date < 11) { $date = "午時(오시)"; }
else if($date >= 11 && $date < 13) { $date = "未時(미시)"; }
else if($date >= 13 && $date < 15) { $date = "申時(신시)"; }
else if($date >= 15 && $date < 17) { $date = "酉時(유시)"; }
else if($date >= 17 && $date < 19) { $date = "戌時(술시)"; }
else if($date >= 19 && $date < 21) { $date = "亥時(해시)"; }
else if($date >= 21 && $date < 23) { $date = "子時(자시)"; }
else { $date = "丑時(축시)"; }
return $date;
}
// 현재 또는 특정한 날짜를 한글로 출력하는 함수
// $sub가 있을 경우 시:분:초로 출력한다.
function HDate_Time($date="0",$sub="0") {
if(!$date) { $date = time(); }
if($sub) {
$date = date("Y년 m월 d일 H:i:s", $date); // 상세한 시간 시/분/초까지
} else {
$date = date("Y년 m월 d일", $date);
}
return $date;
}
*참고로
time()함수와 위의 HDay_AP()를 이용해서 세계각지의 현재 시각을
직감적으로 표시할 수 있습니다...........
(*채팅할때 제가 사용하는 함수이기도 합니다...)
...계속
--
..