2010-03-18 1 views
2

PHP와 Javascript를 사용하여 새로운 알림 경고를 작성하려고합니다. 100 명의 사용자가 현재 온라인 게시판 응용 프로그램에 로그인하고 한 명의 사용자가 새로운 통지를 게시한다고 가정합니다. 모든 사용자 화면에서 즉각적인 경고 신호를 원합니다. 내가하는 가장 간단한 방법은 끊임없이 서버를 핑 (Ping)하는 것이지만 서버 속도가 느려지므로이를 수행하고 싶지는 않습니다. 또한 공유 호스트에 있습니다. 그래서 나는 소켓 포트에 접근 할 수 없다. 즉, 서버에서 사용자 시스템으로 직접 소켓 통신 채널을 설정할 수는 없습니다.새 업데이트 (데이터베이스)를 사용자 페이지에 자동으로 반영하는 방법

아무도 나에게 이런 종류의 문제에 대한 다른 해결책을 제안 할 수 있습니까 ???

+0

이미 다른 솔루션을 갖고 계시다면 왜 다른 솔루션을 요청하십니까? 왜 당신은 상상 한 (가정 된) 문제의 해결책을 요구합니까, 진정한 해결책이 아닌가? 당신이 아는 바로는 서버 속도가 느려 집니까? 경험과 정확한 프로파일 링에서? 나는 아니 겠지. –

답변

3

이것은 COMET 응용 프로그램입니다. Google for COMET과 많은 정보를 찾아야합니다. 기본적으로 HTTP를 통해 비동기 알림을 검색하는 두 가지 기술이 있습니다. 첫 번째 방법은 이미 원하지 않는 서버에 핑 (ping)하는 것입니다. 다른 방법은 서버에 요청을 보내고 일부 데이터가있을 때만 서버가 응답하도록하는 것입니다. 즉, 1 초에 한 번씩 핑을하고 50 회의 핑과 50 초 후에 메시지를받는 대신에, 서버는 보내는 메시지가있을 때까지 50 초 동안 첫 번째 요청을 보류하고 응답합니다. 이 모든 작업을 수행 할 도구가 있습니다.

+0

하지만 http 서버의 최대 연결 수에는 문제가 있습니다. 공유 호스트에서 이것은 서버 부하보다 훨씬 더 큰 문제가 될 것이라고 나는 생각한다. –

+0

무료 점심은 여기에 없습니다. 긴 요청 방법이 자원을 소비하는 동안 ping은 CPU 시간을 소모합니다. COMET를 지원하는 대부분의 서버는 응용 프로그램이 어떤 방식 으로든 얼음에 요청을 할 수있게하여 적어도 응답을 기다리는 동안 스레드 또는 프로세스를 사용하지 않습니다. 여전히 파일 설명자를 사용하지만 서버에는 최소한 1,000 개가 있습니다. 1,000 명의 사용자가 모두 COMET 응답을 기다리고 있다면 비즈니스 관점에서 좋은 모습을 보일 것이며 더 많은 서버를 확보 할 수 있습니다. –

관련 문제