1-5. php 주석 처리

Posted 2015. 4. 5. 14:23

// 와 /* */는 기존 언어와 동일 하고

한줄 주석 처리에 # 을 쓰는 것도 가능 하다.

<HTML>
 <TITLE> 단순 HTML 문서</TITLE>
 <?php
     // 한줄 주석
     echo '123<BR>';
     echo '456<BR>'; # 이거도 한줄 주석
     /* 요건 여러줄
      주석임 */
?>
</HTML>

실행하면

123

456 이 출력되고 주석은 당욘히 출력이 안된다.

줄 바꿈은 <BR> 이다.

'PHP' 카테고리의 다른 글

폼( INPUT=기능 종류 )  (0) 2015.04.12
폼( <FORM> , </FORM>  (0) 2015.04.12
1-4. php의 기본 작성 방식  (0) 2015.04.05
1-3. 간단한 예제로 시작(HTML방식 및 태그의 의미)  (0) 2015.04.05
인터프리터 방식과 컴파일 방식  (0) 2015.04.05

1-4. php의 기본 작성 방식

Posted 2015. 4. 5. 14:22

php에 서는 문장의 끝일 경우 " . " 또는 " ; " 를 붙여야 문장의 끝으로 인식을 한다.

 

<?php

echo '123'

?>

을 실행 할 경우엔 한줄 뿐이라 ?> 끝을 알리는 태그로 인해 출력은 가능 하지만 실제로는 에러가 난 상황이다.

 

<?php

echo '123'

echo '123'

?> 을 실행 해 보면 에러가 발생하였다는 것을 알 수가 있다.

-> 몇번째 줄에서 " . " 나 " ; " 를 찾고 있다는 것을 알 수 있다.

그리고, 줄 바꿈이 되어 있어도 내부적으로는 한줄로 인식을 한다.

오토셋의 설정 -> 웹서버 기본설정 란을 보면

기본 엑세스 파일이 index.* 으로 되어 있다.

나의 웹 서버가 실행될때 index 라는 파일을 바로 윗 란에 지정한 홈 디렉토리에서 찾아서 보여 주게 된다. 이름을 다른 이름으로 변경하였다면 여기도 변경 해 주어야 한다.

 

에딧플러스를 실행하고 저장 경로를 맞춘 후,

<TITLE> 시작 </TITLE>

<?php

echo '간단한 예제';

?>

를 저장한 뒤 웹페이지에서 localhost로 확인 해 보면 echo의 간단한 예제가 출력이 된다.

 

코드의 구분 방식은 태그로 이루어져 있는데

태그 방식은 시작( <? ) 끝( ?> )의 일반 적인 방법과

시작 ( <?php ) 끝( ?> )의 XML과 구분하기 위한방법, 그리고

시작( <script language="php"> ) 끝( </script> ) 스크립트식 방법과

시작( <% ) 끝( %> )의 ASP 방법이 있다.

 

TITLE은 탭의 이름 이며 <? ?>는 php의 시작과 끝을 알리는 태그이다.

태그옆에 <?php를 붙이는 건 php 방식을 쓴다는 것이다.

시작은 HTML 모드로 시작 하였지만 <?php 태그를 보는 순간 php모드로 변경이 되고

?> 끝 지점을 알리는 태그 이후부터는 다시 HTML 모드로 변경 된다.

<? 만 쓰게 될 경우 XML 방식과 겹치기 때문에 php는 php라고 붙여 준다.

소스 파일을 저장할 때에 확장자를 php로 하였어도 기본 방식은 HTML 방식을 따른다.

그래서 PHP모드가 필요 할 경우 <?php를 붙여주고 끝나면 ?>를 붙여준다.

XML을 사용 할 경우 <?를 사용 하게 되는데 XML과 함께 사용 할 경우라면 더욱 php를 붙여줘야 한다. 그냥 명시적으로 XML과 같이 쓰지 않더라도 php를 붙여서 쓰자.

 

<script language="php> 이 태그의 경우 php를 지원 하지 않는 예전의 웹에디터 들을 위해 나온 태그 이지만 요즘은 php를 지원 하기 때문에 이 방식을 쓰지않고 <?php 태그방식을 사용 한다.

 

<%의 ASP방식일 경우 php.ini 파일에서 asp_tags = off를 On으로 바꿔주고 아파치 재시작 하면 결과가 출력 된다. php에서 asp 쓸일 생기면 설정을 바꿔 주자.

그냥 실행 하게 되면 웹브라우저는 <%을 HTML로 생각 하게 되고 HTML에서의 < 내용 > 부분은 유효하지 않는 코드라 인식되서 아무거도 출력되지 않는다.

 

위의 예제에서 <?php 부분을 바꿔가면서 출력해보면 결과를 알 수 있다.

컴파일은 전체 소스 코드를 기계어로 변환 하는 방식이고

인터프리터 방식은 실행될때마다 한줄씩 코드를 해석하고 기계여로 변환 하는 방식 이다.

스크립트 언어들(PHP, JavaScript.. 등등 )이 인터프리터 방식이다.

이 방식인 이유는 웹 프로그램의 특성상 소스 코드는 원격 컴퓨터(서버)에 존재하기 때문에 이를 수정하면 반드시 업로드 하는 과정을 거쳐야 한다. 업로드 후에는 웹 브라우저도 확인을 해야 한다. 이 과정이 번거롭기 때문에 소스 코드를 직접 서버에 업로드하여 작업하는데 FTP를 지원 하는 프로그램을 이요하면 코드를 수정하는 것 처럼 저장할때마다 반영이 된다. 요즘은 두가지를 혼합한 방식을 사용 하여 속도를 개선중이다. 최초로 실행된 경우 컴파일 작업을 하고 두번째 부터 이미 컴파일된 파일을 재사용 한다. 소스가 수정 되었다면 다음 접속에선 다시 컴파일 작업이 시작된다.

A : Apache

P : PHP

M : MySQL

요즘 리눅스에선 기본으로 APM 설치를 해준다고 함.

 

윈도우환경으로 할꺼기 땜시 autoset.org 싸이트에서 다운받아서 설치하자.

autoset.org 싸이트에 상위 메뉴중 다운로드에서 운영체제에 맞게 다운로드

난. 64비트 다운로드.

클릭 후 좀 기다리면 다운로드 창 뜬다.

설치 하기 전에 이미 쓰던 윈도우용 APM이 있다면 제거 한 후 설치 해야 한다.

 

설치 후 매니저 실행 후 APM을 NT서비스에 등록 ( 파일에 웹 서버 등록 누르면 나옴 )

그리고 우베서버 시작과 MySQL 시작을 클릭하면

나는 웹서버(Apache), DB(MySQL), 스크립트언어(PHP)를 먼저 한다.

웹서버는 대표적으로 Apache와 IIS( 마이크로소프트의 Internet Infomation Server)가 가장 유명하며

점유률 또한 Apache( 50% ), IIS( 35% ) 정도로 이 둘만으로 점유률이 85%나 된다.

안정성과 기능이 좋기 때문이다. PHP는 이 둘과 연동이 가능 하다.

PHP는 Apache와는 DSO방식( Dynamic Shared Object :

Dynamic Shared.. 문자 그대로 동적으로 공유한다는 뜻으로 실행타임중 로드가능 )

IIS와는 ISAPI방식으로 작동한다.( ISAPI : Internet Server Application Interfacce 뭐 일종의 필터링 역할을 한다. request를 IIS를 통해 HTML파일로 걸러내는 뭐 그런일을 한다 )

둘 다 모듈을 어떻게 동작시키는지에 대한 방법들이다.

 

Apache는 DSO 방식과 Static 방식이 있다.

DSO는 모듈을 추가할때 Apache 재 컴파일이 필요없고, Static은 재 컴파일이 필요하다.

동적방식과 정적방식이다. Static이 자원 소모는 많지만 속도는 좀 더 빠를수 있겠다.

뭘 써도 상관없지만 IIS 윈도우 기반에서만 가능하고 Apache는 대부분의 OS와 플랫폼을 지원한다.

단순히 웹 서버의 HTML파일을 받기만 하는 것이 아니라 사용자의 요청을 처리 할 수 있는 CGI 기능이 추가 되었다. ( CGI : Common Gateway Interface의 약자.) 처음의 CGI는 하나의 요청에 대해 하나의 프로세스를 실행하고 작업이 끝나면 종료하는 방식으로써, 10개의 요청이라면 10개의 CGI가 생성되는 방식 이었다. 향후에 스크립트 언어가 나오면서( JavaScript, PHP, ASP 같은 싸이드 언어들 ) CGI방식이 스크립트 모듈들의 쓰레드 방식으로 변경되어 효율이 좋아졌다.

기존의 CGI보다 성능이 30배 가량 높은 FastCGI가 나오긴 했지만 모듈들의 효율성보단 못하다.

1. 웹 브라우저 주소창에 네이버 입력 후 엔터

( 1.5 Proxy Server가 존재 한다. Proxy Server는 이미 접근 한 경우가 있는 서버의 경우 웹 서버에 접속 하지 않고 Proxy Server가 가지고 있는 정보를 사용자에게 바로 전송 한다. 사용량이 많아져 반응 속도가 느려졌을때 이 과정을 거치는데 요즘은 네트워크 속도가 점점 빨라지고 있어 Proxy Server도 사라져 가고 있는 추세다. )

2. 웹 브라우저에 입력된 주소는 DNS 서버를 통해 IP 변환 된다

3. 변환된 IP를 통해 웹 서버에 접속하고 URL을 통해 요청 파일의 정보를 전달한다

4. 웹 서버는 요청 파일을 서버 내부에서 찾는다

5. 웹 서버는 찾은 파일을 처리하고 그 결과를 웹 브라우저에 전달한다

6. 웹 브라우저는 전달받은 결과를 해석해서 사용자에게 보여준다

 

URL은 프로토콜(통신규약 : TCP, UDP 등등), 도메인, 상세주소로 분리 된다

도메인은 DNS서버( Domain Name Server)를 거쳐 IP로 변환된다.

숫자로만 이루어져 있는 IP주소를 일일이 외우기 어렵기 때문에 도메인 이란 것을 만들어 IP에 이름을 붙여주었고 DNS서버가 이러한 이름을 그에 해당하는 IP정보를 기록 하고 있어 DNS 서버에 도메인 정보를 전달 해주면 그 도메인에 해당하는 IP를 알려 준다.

즉, 사용자가 naver.com 입력 -> DNS서버에서 IP로 변환 후 사용자에게 알려줌 -> 사용자는 해당 IP로 해당 웹 서버에 접속을 한다.

IP가 확인되면 프로토콜을 통해 통신을 시작 하는데 웹 서버에 사용되는 프로토콜은 HTTP 이다

HTTP는 HyperText Transper Protocol : HyperText 문서를 전송하는 프로토콜이다.

웹 서버에 접근 하려면 주소(IP)와 통로(Port)가 필요 하다. 웹 서버는 주로 80번 포트를 사용 하며, 그 외의 포트는 별도로 제공 하여 접속 한다.

웹 브라우저가 웹 서버에 접속하면 HTTP 프로토콜에 의해 요청하는 컴퓨터의 주소와 파일 정보등을 전송하고 웹 서버는 이 정보를 가지고 요청한 파일을 서버에서 찾아 그 파일을 그대로 전달 하거나 그 파일이 PHP나 ASP처럼 서버스크립트면 스크립트를 실행하고 그 결과를 HTTP프로토콜을 통해 웹 브라우저에 되돌려 준다.

웹 서버의 실행 결과는 웹 브라우저가 이해할수있는 HTML문서 형태로 전송한다. 만약 웹 브라우저가 요청한 파일이 서버의 지정된 주소에 없거나 사용 권한이 없는 등의 문제가 발생하면 에러메시지를 되돌려 준다

403 Forbidden/Access Denied : 파일이나 폴더 접근 불가

404 Not Found : 파일이 없다

500 Internal Server Error : 웹 프로그램 오류로 서비스 불가

503 Service Unavailable : 과도한 접속으로 일시적 서비스 불가