2012-05-23 2 views
1

저는 B 서버가 2 개의 서버 (A, B)를 가지고있어 정보를 얻기 위해 A를 당깁니다. 이제는 A에서 B로 정보를 푸시 할 수있는 가능성을 찾고 있습니다.PHP 서버와 서버 푸시 통신

B가 계속해서 당겨지기 때문에 푸시가 "불과 잊음"이 될 수 있습니다.

내가 생각할 수있는 가장 간단한 해결책은 A에서 B로 HTTP 게시 정보를 통해 w webservice가 될 것입니다. 다른 유효한 (PHP) 솔루션이 있습니까?

소켓 연결은 어떻습니까? 이 PHP에 대한 유효한 접근 무엇입니까? 또는 HTTP에서 UDP로 전환하십시오 (오버 헤드가 적음)

알고 계시는 벤치 마크가 있습니까?

시간에 들으 순수 PHP를 가정

답변

0

도움 :

HTTP 게시 내 마음에 가장 간단한 솔루션입니다.

소켓 연결을 사용하면 소켓에 B를 무기한으로 수신하지 않는 한 (이 경우도 고려하지 않을 것입니다.) 어쨌든 A 소켓과 B 소켓이 필요합니다.

많은 양의 데이터를 전송하는 경우 소켓 연결에 약간의 이점이 있지만, 그렇지 않은 경우 POST를 계속 사용하는 것이 좋습니다.

+0

답장을 보내 주시면 왜 "무기한으로 듣기"가 나쁜 생각인지 몇 가지 정보를 설명하거나 설명해 주시겠습니까? 그리고 HTTP에 대한 다른 프로토콜은 어때? – braunbaer

+0

나는 그 당시 나의 웹 헤드를 가지고 있었다고 생각한다. PHP를 Apache 모듈로 실행한다는 측면에서 볼 때 스레드를 묶어 두는 것은 비효율적입니다. CLI로이를 실행하면 데이터가 빈번하게 열리 며, 매번 열거 나 닫는 것보다 소켓을 열어 두는 것이 더 효율적이된다고 가정하면 이는 현명한 것입니다. 다른 사람이 서버에 연결할 수있는 사람이 누구인지 생각해보십시오. 포트가 무기한으로 열리면 어떤 피해를 줄 수 있습니까? –

+0

TCP/UDP의 관점에서 이것은 데이터 도착의 중요성에 달려 있습니다. (좋아요, B가 여전히 당신의 게시물 에서처럼 폴링 중이라면 이것은 낮습니다. - 왜 PUSHing과 폴링 모두에 신경을 쓰지는 않겠지 만)과 UDP의 이점 (낮은 오버 헤드)이 가치가 있는지 여부 (데이터의 빈도 및 크기에 따라 다름) –

관련 문제