[함수] 파일에 로그 기록을 위한 함수 비교(fopen vs error_log)
테스트 환경
Ubuntu 14.04(vm)
php 5.5.20 cli
다음의 3가지 경우에 대해 루프를 만번, 백만번으로 하여 간단한 테스트 진행
1. 파일을 열어놓고 연속하여 쓸때
<?php
$start = microtime(true);
$msg = "가나다라마바사아자차카파타하\n";
$path = 'error_log_test2.log';
$fp = fopen($path, 'a');
for($i=0;$i<1000000;$i++)
{
fwrite($fp, $msg);
}
fclose($fp);
$end = microtime(true);
$runtime = $end - $start;
echo $runtime."\n";
// loop 10000
// 0.019741058349609
// 0.020673990249634
//loop 1000000
// 1.3019089698792
// 1.286828994751
2. 에러 로그를 기록하기 위한 함수
<?php
$start = microtime(true);
$msg = "가나다라마바사아자차카파타하\n";
$path = 'error_log_test.log';
for($i=0;$i<1000000;$i++)
{
error_log($msg,3,$path);
}
$end = microtime(true);
$runtime = $end - $start;
echo $runtime."\n";
// loop 10000
// 0.065378904342651
// 0.057605981826782
// loop 1000000
// 5.6507439613342
// 5.5530431270599
3. 로그 기록으로 많이 쓰이는 형태
<?php
$start = microtime(true);
$msg = "가나다라마바사아자차카파타하\n";
$path = 'error_log_test3.log';
for($i=0;$i<1000000;$i++)
{
$fp = fopen($path, 'a');
fwrite($fp, $msg);
fclose($fp);
}
$end = microtime(true);
$runtime = $end - $start;
echo $runtime."\n";
// loop 10000
// 0.063140869140625
// 0.060925006866455
// loop 1000000
// 6.3175179958344
// 6.0115058422089
// ex ) fopen option이 w 일때 112.84560894966
* 로그 기록을 위해 선택해야할 사항
- 파일을 열어놓은 상태에서 연속하여 쓰는 것이 가장 빠르다고 할 수 있으나 특정한 목적이 아니면 거의 쓰이지 않음
- 2, 3번은 속도에서 차이가 있음(대규모 로그 기록으로 3번 방식보다는 2번 방식이 빠름)
결론 : error_log() 에 대한 소개.
많이 쓰이는 간단한 함수인데 잘 모르고 지나가는 분이 많아서 소개해보았습니다.
http://php.net/manual/kr/function.error-log.php
출처 : phpschool
'개발-PHP' 카테고리의 다른 글
[함수] 라디오버튼, 체크박스, 셀렉트박스 쉽게 관리하기 (0) | 2016.03.30 |
---|---|
[함수] 배열을 통째로 인코딩 합시다. (0) | 2016.03.30 |
[함수] PHP 레이아웃을 깔쌈하게 꾸미기 (0) | 2016.03.30 |
[함수] 이미지정보추출 (0) | 2016.03.30 |
[함수] iconv 언어셋 옵션 //TRANSLIT , //IGNORE (0) | 2016.03.30 |