PHP 스크립트에서의 HTTP 통신 #3 – 리눅스 명령어 wget

wget 소개

wget은 URL 만으로 웹 상의 콘텐츠를 가져올 수 있는 간편한 리눅스 명령어입니다. 대부분의 리눅스 버전에는 wget 명령어도 기본으로 포함되어 있으나, 그렇지 않더라도 새로 설치하는 것은 어렵지 않을 것입니다. PHP에는 쉘 스크립트를 실행하는 실행 연산자 backtics(`  `)가 있기 때문에, wget 명령어 역시 PHP 스크립트 상에서 실행이 가능합니다.

Continue reading

PHP 스크립트에서의 HTTP 통신 #2 – fsockopen

fsockopen 소개

PHP의 fsockopen 함수는 소켓 통신을 위한 간단하고 유용하며 특이한 함수입니다. 호스트명과 포트 번호를 입력받은 fsockopen 함수의 반환값은 재미있게도 파일 포인터입니다. 이후부터는 fwrite와 fread 등의 함수로 마치 파일입출력을 하듯이 통신을 할 수 있습니다.

물론 fsockopen은 좀더 많은 프로토콜에 범용적으로 사용하는 만큼, 앞서 소개한 cURL에 비해 무척 번거롭습니다. fsockopen으로 통신을 하기 위해서는 반환받은 파일 포인터에 fwrite로 보낼 데이터를 프로토콜 스펙에 따라 정확하게 입력해야 하기 때문입니다. 스펙과 글자 하나라도 달라지면 응답을 받을 수 없는 것은 물론입니다.

HTTP 스펙에 대해서는 W3C에 공식문서가 있습니다만, 필요한 내용을 발췌독하기 어렵기 때문에 PHP 매뉴얼에 세계의 여러 개발자들이 올려놓은 예제들을 참고하는 것이 빠르게 문제를 해결하는 데에 더 큰 도움이 됩니다.

Continue reading

PHP 스크립트에서의 HTTP 통신 #1 – cURL 라이브러리

cURL 소개

PHP 상에서 URL을 가지고 HTTP 통신을 해야 하는 경우가 있습니다. 이를테면 타 이미지 호스팅 서버의 이미지를 가져와야 한다던가, 블로그의 RSS를 가져와서 최근 글을 추려내야 한다던가, XML 포멧으로 반환되는 API와 통신해야 한다던가, 어느 페이지에 값을 보내야 한다던가, 적용할 수 있는 상황은 무척 많습니다.

방법은 여러 가지가 있는데, 그 중에 간단하고도 널리 사용되는 방법은 바로 cURL 라이브러리를 이용하는 것입니다. cURL은 라이브러리 제작자 Daniel Stenberg이 command line과 URL을 합성하여 만든 이름인데, 이름 그대로 본래는 커맨드라인 상에서 URL을 통해 통신할 때에 사용하는 라이브러리입니다.

Continue reading