본문 바로가기
Study

Alphastudio's 2nd Study 1일차-3

by hyeongjin's_life 2012. 11. 22.

Alphastudio's 2nd Study 1일차



<공부하는 교재>


어제 만든 주문 폼에 이어서 파일을 열고 쓰는 작업을 해보겠습니닷! ㅎㅎ

먼저 어제 작성했던 orderform.html에 주소를 입력하는 칸을 추가 했구요,


그리고 입력받은 날짜, 각 제품의 개수, 가격 등이 메모장에 기록이 되도록 했습니다.



그럼 위에 코드에서 사용한 함수들에 대해 간단히 정리하겠습니다.

1. @$fp = fopen("$DOCUMENT_ROOT/../orders/orders.txt", 'ab');

파일을 여는 함수입니다. 총 네가지의 파라미터가 있지만 저는 경로와 사용 모드에 대한 것만 작성 했습니다. 한가지 중요한 점은, DOCUMENT_ROOT/../라는 경로가 APM을 설치한 컴퓨터엔 없다는 것입니다. 저도 책에 있는 코드를 작성하였더니 계속 구매 처리가 진행되지 않았다는 메시지(위에서 !$fp일 경우 출력하게 만든 문구)가 나와서 원인을 찾느라 애먹었네요; 인터넷을 검색해보니 APM 내의 Apache 서버에 DOCUMENT_ROOT라는 것이 지정되어 있기는 하지만 APM_Setup 폴더 내에 orders라는 폴더를 미리 만들어 줘야 실행되더군요; fp라는 함수가 파일이 없으면 파일을 만들고 작성을 시작하지만 지정 경로의 폴더가 없을 경우폴더까지는 만들어 주지 않나봅니다. 하하;



다음으로 flock()의 경우 동시에 여러명이 접속하면서 값이 이상해지는 것을 방지하기 위함입니다. Database에서 발생하는 교착상태라고 생각하시면 될 것 같네요. flock($fp, LOCK_EX);로 제가 이 파일을 작성하고 있는 동안 다른 사용자가 이 파일에 접근하는 것을 막아줍니다. 그리고 작성이 끝나면 flock($fp, LOCK_UN);을 이용하여 락을 풀어주게 됩니다. 락을 잡고 있는 동안 fwrite()함수를 이용하여 메모장에 글을 작성하게 되는데, 이것은 outputstring에 미리 지정해 놓은 값들을 바탕으로 

fwrite($fp, $outputstring, strlen($outputstring));

함수를 통해 작성됩니다. 마지막 strlen은 작성된 문자의 길이를 숫자로 나타내 주는 것이구요.

이렇게 작성한 뒤, http://localhost.orderform.html로 접속하여 값을 입력하고 submit 버튼을 눌러 제출하게 되면,


미리 만들어 놓은 APM_Setup/orders 폴더 내에 orders.txt 파일이 만들어지며 내부의 내용은 orderform.html에서 입력한 것들로 작성되게 됩니다. 여기서 또 주의할 것이 있는데, 소스 내부에 \t로 간격이 조정되지만 \n의 경우 \r\n으로 작성해야 한줄 띄는것이 적용 되더군요.. \n만 입력했을땐 이상한 문자가 남겨지면서 한줄 띄기 기능이 되지 않던데 이게 왜 안되는지는 정확히 모르겠습니다..ㅜㅜ


오늘 공부한 내용은 여기까지구요, 내일은 배열을 사용하는 방법을 공부해 보겠습니당~

'Study' 카테고리의 다른 글

세션과 쿠키의 차이점  (0) 2012.11.24
HTTP 프로토콜에서 GET 과 POST의 차이  (0) 2012.11.24
Alphastudio's 2nd Study 1일차-2  (0) 2012.11.20
Alphastudio's 2nd Study 1일차  (0) 2012.11.20
20121001_리눅스의 장단점  (0) 2012.11.20