출처: https://opentutorials.org/module/384/4332



1. CGI(Common Gateway Interface)

CGI(Common Gateway Interface)는 웹서버와 외부 프로그램을 연결해주는 표준화된 프로토콜이다.

웹이 처음 등장했을 때는 HTML과 이미지를 전달해주는 웹서버 밖에 없었다. 하지만 웹에 대한 수요가 증가하면서 정적인 HTML만을 가지고 정보를 제공하는 것에 대한 한계를 극복하기 위해 등장한 기술이 CGI이다. 웹서버가 처리할 수 없는 정보가 웹서버로 요청되었을 때, 그 정보를 처리할 수 있는 외부 프로그램을 호출함으로써 외부 프로그램이 처리한 결과를 웹서버가 받아서 웹브라우저로 전송하는 것이다.

외부 프로그램은 C, C++, Python 등 어떤 언어로든 작성될 수 있는데, 이를 가능케 하는 것은 웹서버와 외부 프로그램은 서로 공통의 규칙인 CGI 표준을 따르기 때문이다.



2. FastCGI

CGI는 하나의 요청(request)에 하나의 프로세스를 생성한다. 이것은 프로세스를 생성하고 제거하는 과정에서 많은 부하가 발생하기 때문에 성능이 느리다. 이를 개선하기 위해 등장한 것이 FastCGI이다. 

FastCGI는 요청이 있을 때마다 프로세스가 만들어지는 것이 아니라 만들어진 프로세스가 계속해서 새로운 요청들을 처리한다. 덕분에 프로세스를 생성하고 제거하는 데에 드는 부하가 줄어든다.


3. PHP-FPM(FastCGI Process Manager)

PHP-FPM은 PHP를 FastCGI 모드로 동작하도록 해준다. PHP5.4 RC부터는 PHP에 기본으로 내장되었다.

PHP-FPM을 사용하면 아래와 같은 이점이 생긴다. 


  • Adaptive process spawning 
  • Basic statistics (ala Apache's mod_status) 
  • Advanced process management with graceful stop/start
  • Ability to start workers with different uid/gid/chroot/environment and different php.ini (replaces safe_mode)
  • Stdout & stderr logging
  • Emergency restart in case of accidental opcode cache destruction
  • 업로드를 빠르게 처리해준다.
  • "slowlog"를 통해서 느리게 동작하는 부분을 추적할 수 있게 한다.
  • Enhancements to FastCGI, such as fastcgi_finish_request() - 요청을 일단 끝내고 후처리가 요구되는 작업을 백그라운드로 처리할 수 있도록 해준다.


'IT > PHP' 카테고리의 다른 글

날짜 관련 소스 예제  (0) 2018.02.14
ftp를 이용한 원격 파일 업,다운로드  (0) 2018.02.14
PHP XML 파싱(Parsing) 간단 예제  (0) 2018.02.14

// 현재의 날짜(일월연) 가져오기

$now = time();

$currDate = date("dmy", $now);


// 현재의 요일 구분하기  (0~6)

if ( date('w') == 0 ) {       // when today is Sunday

} else if ( date('w') == 1 ) {      // when today is Monday


}

else {

}



// 현재의 날짜로부터 증감
// mktime( 시, 분, 초, 월, 일, 연 )
$day_before_yesterday = date("dmy", mktime(0,0,0,date("m"),date("d")-2,date("Y"))); // 2일전 날짜(일월연)

'IT > PHP' 카테고리의 다른 글

CGI, FastCGI, PHP-FPM 개념  (0) 2018.12.16
ftp를 이용한 원격 파일 업,다운로드  (0) 2018.02.14
PHP XML 파싱(Parsing) 간단 예제  (0) 2018.02.14

ftp를 이용한 원격 파일 업,다운로드

- 참고 : http://blog.habonyphp.com/entry/ftp-ftp%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%9C-%EC%9B%90%EA%B2%A9-%ED%8C%8C%EC%9D%BC-%EC%97%85%EB%8B%A4%EC%9A%B4%EB%A1%9C%EB%93%9C#.WoO5lJa7qUl








// FTP 다운로드 로직

function FTPfileDownload($localfile, $remoteFile){


// B 호스트 정보

$ftp_server = "data.sample.com";

$ftp_server_port = 21;

$ftp_user_name = "user_name";

$ftp_user_pass = "12345678";


// B 호스트 접속

$conn_id = ftp_connect ( $ftp_server, $ftp_server_port );



if (! $conn_id) {

echo 'connection error!';

exit;

}



// B 호스트 로그인

$login_result = ftp_login ( $conn_id, $ftp_user_name, $ftp_user_pass );





if ( !$login_result ) {

echo 'login error!';

ftp_quit ( $conn_id );

exit;

}


ftp_pasv($conn_id, true);



// 원격으로 B 호스트에서 다운로드합니다.


// 임시파일 생성 및 쓰기모드로 열기

$fp = fopen ( $localfile, 'w' );





// 원격으로 파일을 가져옵니다.

$ret = ftp_nb_fget ( $conn_id, $fp, $remoteFile, FTP_BINARY );





while ( $ret == FTP_MOREDATA ) {

// 다운로드중 다른 작업을 작성합니다.

$ret = ftp_nb_continue ( $conn_id );

}



ftp_close ( $conn_id );

fclose ( $fp );


}

'IT > PHP' 카테고리의 다른 글

CGI, FastCGI, PHP-FPM 개념  (0) 2018.12.16
날짜 관련 소스 예제  (0) 2018.02.14
PHP XML 파싱(Parsing) 간단 예제  (0) 2018.02.14


PHP XML 파싱(Parsing) 간단 예제

 - 출처 : http://smart3.tistory.com/entry/PHP-XML-%ED%8C%8C%EC%8B%B1Parsing-%EA%B0%84%EB%8B%A8-%EC%98%88%EC%A0%9C


'IT > PHP' 카테고리의 다른 글

CGI, FastCGI, PHP-FPM 개념  (0) 2018.12.16
날짜 관련 소스 예제  (0) 2018.02.14
ftp를 이용한 원격 파일 업,다운로드  (0) 2018.02.14

+ Recent posts