2010-02-02 2 views
0

php로 혜성 푸시를 작성했지만이 코드를 신입 회원을 통해 자바 서버에서 사용하면 아파치가 갖고있는 요청 문제 당 하나의 프로세스를 해결하고 내 채팅을 사용하여 많은 사용자와 잘 확장 할 수 있을까요?php comet with quercus

+0

호기심에서 벗어나서 libpurple 및 XMPP 솔루션 사용에 대한 아이디어를 탐색 해 보셨습니까? 아파치의 병목 현상을 해결할 수 있는지 확신 할 수는 없지만, 제 자신의 상황에 대한 그런 해결책을 고려해 왔으며, 여러분이 무언가 거의 살아있는 시점까지 무엇을 탐험했는지 알고 싶습니다. – Anthony

+0

나는 libpurple에 대해 조금 읽었다. 그런 다음 사용자는 핫메일 또는 Gmail 계정을 사용하여 채팅해야합니다. 나는 포럼 포럼에서 정체성을 가지고 채팅하고 싶다. 그래서 나에게 적합하다고 생각하지 않는다. c/C++을 사용하여 구현해야합니까? – ajsie

답변

1

Quercus는 (J) VM에서 실행되므로 스레드를 시작할 수있는 다른 코드와 함께 실행할 수 있습니다. 그런데 왜 채팅을하기 위해 스레드가 필요합니까? 단순히 바닐라 PHP 요청에 대한 타임 아웃을 0 (타임 아웃 없음)으로 설정하고 사용자에게 다시 보낼 값이있을 때까지 기다립니다.

뭔가 다른 사람의 요청에 대한 응답이 될 것입니다 (예 : A는 "hello"로 B가 어떤 일이 생길 때까지 방해합니다). 그건 멀티 스레딩을 필요로하지 않습니다.

아파치/PHP를 계속 사용하고 위의 작업을 수행 한 다음 XML RPC와 같은 것을 통해 Java (또는 기타) 서비스에 연결하면 영원히 기다릴 수 있습니다. 이 서버는 여러 스레드를 실행하거나 필요한 모든 작업을 수행 할 수 있습니다.

+0

아파치로 혜성을 구현하면 5000 명의 사용자가있는 경우 아파치는 많은 메모리와 CPU를 소비하는 5000 개의 활성 프로세스를 생성합니다. 동시에 100,000 명의 사용자가 채팅하는 경우 웹 서버에서 어떤 일이 발생하는지 상상해보십시오. 누군가는 채팅을하는 사용자가 100,000 명이라도 java (언어와 서버)를 사용한다고해서 아무 것도 보내지 않는 사용자의 프로세스가 "잠자기 상태"가 될 것이고 활성 프로세스 만이 CPU와 RAM을 소모한다고합니다. 잘못된 것이라면 저를 정정하십시오. 그리고 저를 위해이 개념을 정교하게 만들면 도움이 될 것입니다. – ajsie

+0

그래서 내가 궁극적으로, 만약 내가 sucessfully이 구현 아파치 프로세스 문제를 해결하고 잠을 비활성 프로세스를 넣을 것입니다 (내가 성공적으로 구현 한) 신어와 자바 서버에서 내 PHP 혜성 코드를 사용하여 궁금해? – ajsie

+0

@noname : 혜성 프로세스는 언어와 상관없이 열린 연결과 실행 코드입니다. 이제 자바 바이트 코드에서 오버 헤드가 낮다고 주장 할 수 있습니다. 나는 그것이 사실인지 아닌지 또는 그것이 어느 정도인지에 관해 말할 수 없다. 그러나 이러한 열린 연결은 자원을 소비 할 것이고 기본적으로 수면 과정의 차이는 없습니다. PHP는 Java가 할 수있는 것처럼 차단 작업을 수행하고 잠을 자면됩니다. 또한 실제로 10 만 명의 사용자가 있습니까? 왜 당신이 갖고 싶은 것보다 실제로 가지고있을 문제를 만들지 않습니까? – cletus

2

, Quercus는 요청 당 아파치 병목 현상을 해결합니다. 그러나 JVM의 병목 현상을 이해해야합니다. 제 의견으로는 C/C++에서 libevent, Erlang, Google Go 또는 단순히 휴대 성을 위해 자바 서블릿을 사용하여 서비스 또는 응용 프로그램을 작성해야합니다.

+0

cletus 답변에 대한 내 의견을 읽어주십시오. 나는 이것이 실제로 작동하는지 그리고 서버가 많은 사용자 채팅으로 끊지 않을지를 정말로 알아야합니다. – ajsie

+0

크레이 터스 질문에 답글을 남겼습니다. –