묻고답하기
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
fopen 과 fwrite를 이용해 파일에 쓰기
2002.09.19 14:29
다음 코드좀 봐주실래요...
<?
$fp = fopen("./log.txt","a+");
$string1 = "$REMOTE_ADDR"."t";
$string2 = date("Y-m-d H:i:s",time());
fwrite($fp, $string1);
fwrite($fp, $string2);
fwrite($fp, "n");
fclose($fp);
?>
이런 코드를 실행시키면 log.txt에
파일에 접근한 IP와 시간이 기록되는데,
이렇게 a+모드로 열면 파일의 맨아랫부분에 추가되더라구요.
제가 하고 싶은건 파일의 맷 윗줄에 최신 정보가 기록되도록 하고싶은건데...
해서~!
rewind() 함수를 이용하려 했더니,
a 모드나 a+ 모드에선 rewind() 함수를 이용할수 없다고 하더라구요.
그래서 어쩔수 없이 다음과 같이 r+ 모드를 사용해서 파일을 열었더니,,,
<?
$fp = fopen("./log.txt","r+");
$string1 = "$REMOTE_ADDR"."t";
$string2 = date("Y-m-d H:i:s",time());
fwrite($fp, $string1);
fwrite($fp, $string2);
fwrite($fp, "n");
fclose($fp);
?>
파일 포인터가 파일의 맨 앞으로 이동해서 열리는것 까지는 해결됐는데,
문제는, 겹처쓰기가 되더라는 겁니다.
즉, 맨 윗줄의 내용을 지우고 그위에 새로운 내용을 쓰더라구요.
fwrite()가 원래 겹쳐쓰는건가요?
아니면 어떻게 해야 파일의 맨 윗줄에 추가할수 있는지요?
고수님들의 답변을 기다리겠습니다... (__)
<?
$fp = fopen("./log.txt","a+");
$string1 = "$REMOTE_ADDR"."t";
$string2 = date("Y-m-d H:i:s",time());
fwrite($fp, $string1);
fwrite($fp, $string2);
fwrite($fp, "n");
fclose($fp);
?>
이런 코드를 실행시키면 log.txt에
파일에 접근한 IP와 시간이 기록되는데,
이렇게 a+모드로 열면 파일의 맨아랫부분에 추가되더라구요.
제가 하고 싶은건 파일의 맷 윗줄에 최신 정보가 기록되도록 하고싶은건데...
해서~!
rewind() 함수를 이용하려 했더니,
a 모드나 a+ 모드에선 rewind() 함수를 이용할수 없다고 하더라구요.
그래서 어쩔수 없이 다음과 같이 r+ 모드를 사용해서 파일을 열었더니,,,
<?
$fp = fopen("./log.txt","r+");
$string1 = "$REMOTE_ADDR"."t";
$string2 = date("Y-m-d H:i:s",time());
fwrite($fp, $string1);
fwrite($fp, $string2);
fwrite($fp, "n");
fclose($fp);
?>
파일 포인터가 파일의 맨 앞으로 이동해서 열리는것 까지는 해결됐는데,
문제는, 겹처쓰기가 되더라는 겁니다.
즉, 맨 윗줄의 내용을 지우고 그위에 새로운 내용을 쓰더라구요.
fwrite()가 원래 겹쳐쓰는건가요?
아니면 어떻게 해야 파일의 맨 윗줄에 추가할수 있는지요?
고수님들의 답변을 기다리겠습니다... (__)
댓글 2
-
주니야
2002.09.19 15:21
-
송태원
2002.09.19 16:05
주니야님 댓글에 대해서... : 엔터를 친 다음에 커서를 맨앞에 놓는다고 하셨는데요,
님의 예상은, 엔터를 먼저 한번치면, 원래 있던 내용이 한줄씩 아래로 이동하겠지...하는것이지요?
그렇게 엔터를 쳤을때 모든 줄이 한줄씩 밀린다면,
엔터가 아닌 다른 문장을 입력해도 그대로 입력되어야 할텐데,
그렇지를 않거든요.
엔터를 치던, 다른 문장을 입력하던, 그냥 그 위치에 있던 내용위에
덥어쓰기가 되더라구요. @.@;;;
엔터를 친다음에 다시 커서를 맨 앞에다가 놓고서... 말이예요~
전 Visual Basic은 잘 아는데 PHP는 잘 몰라여 혹시... 그런 명령어가 있다면
그렇게 한번 해보세요~