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

fsockopen 소개

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

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

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

Continue reading