2011-10-07 2 views
1

채팅을 지원하는 멀티 플레이어 웹 게임 응용 프로그램을 만들고 싶습니다. 나는 응용 프로그램이 수백 개의 동시 연결을 처리해야한다고 생각합니다.혜성 지원이있는 Apache

나는 (대부분 비슷한 PHP + Comet (long-polling) scaling/hosts에) 이러한 제한이 공유 웹 호스팅, 내 응용 프로그램을 호스팅 할 계획입니다 :

  • 은 내가 웹 서버를 변경할 수 있습니다하지 않는 것 같습니다. 대부분 아파치를 사용하고있을 가능성이 큽니다.
  • MySQL을 5, PHP의 5.3.x, 펄, 파이썬, 루비 온 레일즈, CGI 지원

여기

과을 (내가 HawkHost의 공유 웹 호스팅을 사용할 것입니다. 더 정확하게하려면) 내 내 질문에 다음 연구의 결과입니다

  1. 일부 자원 (같은 Python Comet Server)는 파이썬이 더 나은 선택 인 반면 PHP는, 동시 연결을 처리하기위한 좋은 아니라고 말한다. 사실입니까?
  2. "데이터가 변경 될 때까지 반복적으로 루프"를 사용하여 PHP에서 긴 폴링 기법을 시도했습니다 (올바르게 구현되었는지 여부는 알 수 없지만 Comet issue with abandoned open connections과 같이). 방법. 이 은 거의 작동입니다. 나머지 문제는 브라우저가 닫힐 때 서버 프로세스가 종료되지 않는다는 것입니다 (서버는 연결이 종료되었음을 알지 못하며 데이터는 절대로 변경되지 않습니다). PHP가 브라우저가 종료되었는지 여부를 감지하여 루프를 중지시킬 수있는 방법이 있습니까?

나는 답을 찾기 위해 모든 곳을 찾고 있었지만 여전히 결론을 내릴 수는 없습니다. 이 주제는 StackOverflow에서 여러 번 묻습니다. 반복해서 들리면 유감입니다. <.

현재 JS 용 PHP, MySQL 및 JQuery를 사용하여 코딩 할 수 있습니다. 나는 여전히 Comet and Server Push라는 용어에 익숙하지 않다. 필요한 경우 Python과 같은 새로운 스크립팅 언어를 배우려합니다.

내 프로젝트를 시작하는 데 사용할 스크립팅 언어, 프레임 워크 및 기술에 대한 통찰력에 감사드립니다.

+0

나는 이전과 같은 것을 궁금해하고있었습니다. 문제는 PHP가 아니라 Apache라고 생각합니다. Lighttpd는 아파치보다 혜성에서 훨씬 잘 작동합니다. 검색 stackoverflow, 그것에 대해 몇 가지 좋은 토론이 있습니다. 예 : http://stackoverflow.com/questions/603201/using-comet-with-php – ZolaKt

+0

StackOverflow에서이 스레드와 많은 관련 스레드를 발견했습니다. 문제는 공유 웹 호스팅 내에서 아파치로 제한됩니다. 그래서 위의 조건을 고려할 때 얻을 수있는 최선의 해결책을 찾고 있습니다. 어쩌면 성능을 약간 높이기 위해 Perl이나 Python을 사용할 수 있습니다. 그러나 어쨌든, 빠른 응답을 주셔서 감사합니다. @ ZolaKt : D – Arkross

+0

나는 당신이 찾고있는 것이 아니라, 일반적으로 긴 폴링없이 그것을 할 수 있다고 알고 있습니다. 데이터베이스의 유무에 관계없이 데이터베이스를 주기적으로 검사해야하는 경우 병목 현상이 발생합니다. 긴 폴링으로 얻을 수있는 것은 요청 수가 적어 성능이 떨어지지만 여전히 db 쿼리가 요청하는 것보다 시간이 오래 걸리면 (아마도 항상 ... 일부는 벤치마킹은 좋지만 유용하지 않은 것을 찾았습니다.) – ZolaKt

답변

2

공유 호스팅 환경이 있고 많은 제한이있는 경우 실시간 기능을 아웃소싱하는 것이 좋습니다. 내가 그런 회사 인 푸셔 (Pusher)에서 일하기 때문에 나는 이것을 말할 것이다. 그러나 나는 다른 사람들이이 일을 뒷받침 해주기를 바랍니다.

호스트 된 솔루션을 사용할 때 RESTful API에 대한 HTTP 요청을 만들어 알림을 보낼 수 있습니다. 그런 다음 서비스는 연결된 웹 클라이언트 (브라우저)에 메시지를 전달합니다. 브라우저는 스크립트 태그를 포함하거나 호스팅 서비스에 연결되는 라이브러리를 사용해야합니다.

주요 장점은 다음과 같습니다

  • 없음 설치 또는 유지 보수
  • 지속적인 연결을 처리 할 필요가 없습니다 - 아니 리소스 사용
  • 정말 간단한 사용법 : 응용 프로그램에서 스크립트 태그와 REST API를
  • 전화 호스팅 솔루션에서 스케일링을 처리합니다.

또한 list of hosted realtime solutions입니다.

+0

와우, 훌륭한 서비스 목록입니다! 호스팅 서비스의 기본 개념은 없지만 Pusher를 사용해 보겠습니다. 고마워, @ 레거! – Arkross

+0

푸셔 락, ​​@leggetter! : D – Arkross

+0

@Arkross가 당신을 위해 정말 기뻐하고 있습니다 :) – leggetter

0

그래서 파이썬을 사용할 수 있습니다. 그런 다음 Tornado을 사용할 수 있습니다. (psst ... 페이스 북에서 사용)

그리고 오픈 연결에서도 같은 문제가있었습니다. PHP에서 검색 솔루션에 시간을 투자하지 마십시오. 나중에 미안합니다. 나는 ~였다. 혜성을 위해 만들어진 것을 사용하십시오. JAVA를 더 선호한다면, CometD이 있습니다.

그리고 게임은 정상적인 호스팅을 얻습니다. 그들은 싸구려 요즘.

+0

"일반 호스팅"이란 VPS (Virtual Private Server)를 의미합니까? 나는 이것이 서버 자체를 구성 할 수 있기 때문에 앱이 실제로 커지고 더 많은 연결을 처리해야 할 때 좋은 해결책이라고 생각합니다. 나는 자바에도 익숙하다. 아이디어를 주셔서 감사합니다, @ernestas! – Arkross

+0

예, VPS가 좋았습니다. 환영합니다 :) –