Long-Polling, 웹 소켓, SSE (Server-Sent Events) 및 Comet이란 무엇입니까?
PHPLong-Polling, 웹 소켓, SSE (Server-Sent Events) 및 Comet이란 무엇입니까?
나는 몇몇 기사를 읽는 것을 시도했다, 그러나 나는 아직 개념에 아주 명확하지 않다.
누군가가 이러한 기술이 무엇인지 설명 할 수있는 기회를 원하십니까?
한 번봤을 때마다, 서버는 연결을 유지하고 데이터를 클라이언트에 보냅니다. 연결은 어떻게 열려 있으며 클라이언트는 푸시 된 데이터를 어떻게 받습니까? (클라이언트는 데이터를 어떻게 사용합니까? 일부 코드가 도움이 될 수 있습니까?)
이제, 그들 중 어느 앱을 실시간 앱에 사용해야합니까? 나는 웹 소켓 (socket.io [node.js 라이브러리])에 대해 많이 들었지만 왜 PHP가 아닌가?
해결법
-
==============================
1.
아래 예제에서 클라이언트는 브라우저이고 서버는 웹 사이트를 호스팅하는 웹 서버입니다.
이러한 기술을 이해하기 전에 먼저 고전적인 HTTP 웹 트래픽을 이해해야합니다.
Comet은 스트리밍과 롱 폴링을 사용하여 실시간 애플리케이션을 구현하는 HTML5 이전의 기술 모음입니다. 위키 백과 또는이 기사에 더 많은 것을 읽으십시오.
웹 소켓과 함께 PHP를 사용할 수 있습니다. 래칫 (Ratchet)을 확인하십시오.
-
==============================
2.
Tieme은 훌륭한 답변을하기 위해 많은 노력을 기울였습니다. 그러나 OP 질문의 핵심은 각 기술이 작동하는 방식보다는 PHP와 관련이있는 기술이라고 생각합니다.
PHP는 명백한 클라이언트 측 html, css 및 javascript 외에도 웹 개발에서 가장 많이 사용되는 언어입니다. PHP는 실시간 응용 프로그램과 관련하여 다음과 같은 두 가지 중요한 문제가 있습니다.
1) PHP는 매우 기본적인 CGI로 시작되었습니다. PHP는 초기 단계부터 매우 진행되어 왔지만 작은 단계에서 발생했습니다. PHP는 그것이 오늘날의 임베디드 가능하고 유연한 C 라이브러리가 될 때까지 이미 수백만 명의 사용자를 보유하고있었습니다. 대부분의 사람들은 이전 모델에 의존했기 때문에 아직 PHP를 벗어나려고하지 않았습니다. cgi 모델 내부적으로. 커맨드 라인 인터페이스조차도 마치 cgi가 GET / POST 요청을 처리하는 것처럼 PHP 라이브러리 (리눅스에서는 libphp5.so, Windows에서는 php5ts.dll 등)를 호출합니다. 마치 "페이지"를 만든 다음 라이프 사이클을 끝내야하는 것처럼 코드를 실행합니다. 결과적으로 다중 스레드 또는 이벤트 기반 프로그래밍 (PHP 사용자 공간 내)이 거의 지원되지 않으므로 현재 실시간, 다중 사용자 응용 프로그램에서는 실용적이지 않습니다.
PHP에는 PHP 사용자 공간에서 이벤트 루프 (예 : libevent)와 스레드 (예 : pthreads)를 제공하는 확장 기능이 있지만 아주 많이 사용되는 응용 프로그램은 거의 없습니다.
2) PHP는 여전히 가비지 수집에 중대한 문제가 있습니다. 이러한 문제가 지속적으로 개선되고 있지만 (위에서 설명한 라이프 사이클을 끝내는 데있어 가장 좋은 단계 일 수 있음) 장기간 실행되는 PHP 응용 프로그램을 만들 때 최선의 시도조차도 정기적으로 다시 시작해야합니다. 이것은 또한 실시간 응용 프로그램에 대해서는 실용적이지 못합니다.
PHP 7은 이러한 문제를 해결하기위한 훌륭한 단계 일 것이며 실시간 응용 프로그램을위한 플랫폼으로 매우 유망한 것으로 보입니다.
-
==============================
3.
나는 이것들에 대해주의를 기울 이려고 노력했으며 자바 관점에서 예제를 모으고 썼다.
Java 개발자를위한 HTTP
Reverse Ajax - 이전 스타일
서버 측의 비동기 처리
Reverse Ajax - 새로운 스타일
서버 보낸 이벤트
동일한 주제를 연구하는 자바 개발자를 위해 여기에 넣으십시오.
from https://stackoverflow.com/questions/11077857/what-are-long-polling-websockets-server-sent-events-sse-and-comet by cc-by-sa and MIT lisence
'PHP' 카테고리의 다른 글
다음 페이지로 PHP Pass 변수 전달 (0) | 2018.09.02 |
---|---|
닫기 태그를 생략하는 이유는 무엇입니까? (0) | 2018.09.02 |
준비된 문장에서 테이블 이름을 매개 변수화 할 수 있습니까? (0) | 2018.09.02 |
PHP의 전역 변수가 나쁜 습관으로 간주됩니까? 그렇다면 왜? (0) | 2018.09.02 |
PHP에서 eval 악마는 언제입니까? (0) | 2018.09.02 |