현재 위치: > 최신 기사 목록> PHP에서 서버 푸시를 구현하는 방법 : WebSocket 및 SSE 기술 비교

PHP에서 서버 푸시를 구현하는 방법 : WebSocket 및 SSE 기술 비교

M66 2025-06-18

PHP 백엔드 기능 개발에서 서버 푸시 문제를 해결하는 방법은 무엇입니까?

서버 푸시는 백엔드 개발 중에, 특히 응용 프로그램이 클라이언트에 실시간으로 데이터를 보내야 할 때 일반적인 요구 사항입니다. PHP는 WebSocket과 Server Sent Events (SSE)의 두 가지 기술을 통해 서버 푸시를 구현할 수 있습니다. 이 두 기술에는 고유 한 장점과 단점이 있으며 올바른 기술을 선택하면 실제 개발 문제를 해결하는 데 도움이 될 수 있습니다.

WebSocket

WebSocket은 클라이언트와 서버 간의 지속적인 연결을 설정하고 실시간으로 양방향 데이터 전송을 수행 할 수있는 전체 이중 프로토콜입니다. PHP에서는 Swoole Extensions를 사용하여 WebSocket을 구현할 수 있습니다.

먼저 Swoole Extension이 설치되어 있는지 확인하고 다음 명령을 통해 설치할 수 있습니다.

PECL SWOOLE 설치

그런 다음 PHP에서 WebSocket 서버를 만들면 다음 코드를 참조 할 수 있습니다.

$ server = 새로운 SwoolewebsocketServer ( "0.0.0.0", 9501);

$ server-> on ( "Open", function (swoolewebsocketServer $ server, $ request) {
    에코 "연결";
});

$ server-> on ( "message", function (swoolewebsocketserver $ server, $ frame) {
    echo "수신 메시지 : {$ frame-> data}";
    // 푸시 로직 $ server-> push ($ frame-> fd, "server message");
});

$ server-> on ( "close", function (swoolewebsocketserver $ server, $ fd) {
    에코 "연결이 끊어졌다";
});

$ server-> start ();

이 코드는 세 가지 이벤트 콜백을 정의하는 WebSocket 서버를 생성합니다 : Open, Message 및 Close. 메시지 이벤트 콜백에서 서버는 수신 된 메시지를 기반으로 데이터를 처리하고 푸시 할 수 있습니다.

서버 분리 이벤트 (SSE)

SSE (Server-Sent Events)는 서버가 데이터 흐름을 클라이언트로 푸시 할 수있는 단방향 통신 프로토콜입니다. SSE를 사용하는 경우 클라이언트는 서버에서만 메시지를 수신 할 수 있으며 서버로 데이터를 적극적으로 보낼 수 없습니다.

다음은 SSE의 구현 예입니다.

헤더 ( "내용 유형 : 텍스트/이벤트 스트림");
헤더 ( "캐시 제어 : 없음");
헤더 ( "연결 : recop-alive");

$ count = 0;

while (true) {
    echo "data : {$ count} \ n \ n";
    플러시();
    // 로직 푸시 $ count ++;
    수면 (1);
}

위의 코드는 응답 헤더 정보를 설정하고 무한 루프를 사용하여 데이터를 주기적으로 클라이언트에게 푸시합니다. 지연을 설정하면 푸시 주파수를 제어 할 수 있습니다.

요약

WebSocket 또는 SSE를 사용하든 PHP는 서버 푸시 기능을 구현할 수 있습니다. WebSocket은 양방향 실시간 통신에 적합하지만 SSE는 단방향 데이터 흐름에 적합합니다. 개발자는 특정 요구에 따라 적절한 기술을 선택하고 실제 시나리오를 기반으로 푸시 로직을 작성할 수 있습니다.