2012-01-28 11 views
0

어제 만 나는 채팅 응용 프로그램을 만들 목적으로 PHP/MySQL/JavaScript 만 사용하여 웹 서버를 통해 두 클라이언트간에 직접 통신 채널을 에뮬레이트하는 방법에 대해 친구에게 묻고있었습니다.PHP 소켓 - 어떻게해야합니까?

그는이 작업을 수행하는 가장 좋은 방법은 SOCKETS를 사용하는 것이라고 말했었습니다. 그 때까지는 들었던 용어였습니다. 오늘 아침에 채팅 응용 프로그램을 만드는 목적으로이 응용 프로그램을 살펴보기 시작했습니다. 그러나 기대했던만큼 쉽지는 않다고 생각하기 시작했습니다.

제 질문은 이것입니다 : 자신의 서버에 대한 액세스 권한이없는 경우 (테스트 목적으로도 사용하는 공유 서버에서 호스팅되는 도메인이 있음), 목표를 달성하기 위해 소켓을 사용할 수 있습니까? 그렇다면 얼마나 정확하게? (아이디어에 완전히 새로운 점을 이해하십시오.) 그렇지 않은 경우 통신 채널을 달성하기위한 다른 방법은 무엇입니까? 나의 유일한 아이디어는 응용 프로그램이 저장 될 웹 서버에 정기적 인 요청 (AJAX)을 보내고 새로운 메시지가 있으면 요청하는 것입니다. 그러나 이것은 실현 가능성이 매우 낮습니다.

미리 도움 주셔서 감사합니다.

답변

3

당신의 친구가 얻으려고하는 것은 귀하의 채팅 사이트에 Comet을 구현하는 것입니다.

PHP 소켓을 사용하여 데몬 역할을 수행한다고 가정 할 때 공유 호스팅 제공 업체가 사용자를 대신 할 수 있을지 의심 스럽습니다.

사용할 수있을 때까지 PHP 스크립트를 걸어 볼 수 있습니다. 그러나 이는 PHP 서버가 클라이언트가 여전히 연결되어 있는지 여부를 알 수 없기 때문에 CGI 기반 서버에서 리소스를 빠르게 소비합니다. 나는 경험에서 이것을 안다.

이런 종류의 일을 위해서 전용 서버 또는 VPS를 얻고 클라이언트와 서버 측 모두에서 모든 통신 문제를 자동으로 처리하는 socket.io과 같이 백엔드를 작성하는 것이 좋습니다. 요청을 처리하기 위해 fork하는 PHP, MYSQL 및 서버는 대개 약간의 오버 헤드가 발생하고 확장 할 수 없기 때문에 일반적으로 Comet 구현을위한 최악의 시나리오입니다.

자신의 Comet 서버를 실행할 여유가 없다면 폴링 만 가능한 옵션 일 수 있습니다. 이것은 가장 리소스 집약적이며 반응이 가장 적을 것입니다.

+0

이 설명에 감사드립니다. 나도이 개념에 조금 퍼지가되어 VPS가 필요한지 또는 헌신적 인 사람이 내 의혹을 확인했다. +1 – Phix

+0

개입에 감사드립니다. 당신은 저에게 아주 불쾌한 용어를 던졌습니다. :) 그래서 나는 당신이 쓴 것의 약 50 %를 이해했다고 생각합니다. 하지만 적어도 필수적이라고 생각합니다. node.js와 함께 socket.io를 실행할 수있는 전용 서버가 필요합니다. –