빠른 기술 개발과 인터넷 응용 프로그램의 대중화로 실시간 커뮤니케이션은 점차 웹 응용 프로그램의 중요한 부분이되었습니다. 서버 측 푸시 기술을 사용하면 개발자가 클라이언트의 활성 요청없이 클라이언트에게 실시간 업데이트 데이터를 직접 보낼 수 있습니다. 서버와 클라이언트 간의 실시간 상호 작용을 통해 사용자 경험과 응용 프로그램 성능을 향상시킬 수 있습니다.
PHP에서는 다양한 기술을 사용하여 WebSocket, Long Polling 및 Server Sent Events (SSE)와 같은 서버 측 푸시 및 실시간 통신을 실현할 수 있습니다. 이 기사는 SSE (Server-Sent Events)를 통해이 기능을 구현하는 방법에 중점을 둘 것입니다.
SSE (Server-Sent Events)는 서버에서 클라이언트로 데이터를 푸시하는 것을 지원하는 HTTP 프로토콜 기반 기술입니다. WebSocket과 달리 SSE는 데이터 흐름이 서버에서 클라이언트로 푸시되는 단방향 통신 모드입니다. 이 기술은 실시간 알림, 라이브 브로드 캐스트 업데이트, 동적 데이터 디스플레이 및 기타 시나리오에 매우 적합합니다.
먼저 PHP에서 SSE 푸시 서비스를 설정해야합니다. PHP 코드 예는 다음과 같습니다.
<?php
header("Content-Type: text/event-stream");
header("Cache-Control: no-cache");
header("Connection: keep-alive");
// 데이터를 클라이언트 사이클로 푸시합니다
while (true) {
// 데이터베이스 또는 기타 데이터 소스에서 데이터를 가져옵니다
$data = getData();
// 클라이언트에게 데이터를 보냅니다
echo "data: " . json_encode($data) . "\n\n";
ob_flush();
flush();
// 데이터 푸시 속도를 제어하십시오
sleep(1);
}
// 데이터를 얻는 방법
function getData() {
// 여기서는 비즈니스 요구에 따라 데이터베이스 또는 기타 데이터 소스를 쿼리 할 수 있습니다.
$data = array(
'message' => 'Hello, SSE!',
'time' => time()
);
return $data;
}
?>
위의 코드에서 먼저 브라우저에 HTTP 헤더를 설정하여 SSE 데이터 스트림이 반환됨을 알려줍니다. 그런 다음 무한 루프에서 데이터는 데이터 소스 (예 : 데이터베이스)에서 얻어 JSON 형식으로 인코딩하여 'echo'PHP의 'echo'문을 통해 클라이언트로 보냈습니다. 각 데이터가 전송되면`ob_flush ()`및`flush ()`를 호출하여 데이터가 적시에 클라이언트에게 전송되도록하십시오. `sleep ()`함수를 통해 데이터 푸시 빈도를 제어하십시오.
서버가 푸시하는 데이터를 수신하려면 클라이언트는 JavaScript의 'EventsOurce'객체를 사용하여 서버와의 연결을 설정해야합니다. 다음은 간단한 HTML 및 JavaScript 코드 예입니다.
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>SSE Demo</title>
</head>
<body>
<div id="message"></div>
<script>
var eventSource = new EventSource("push.php");
eventSource.onmessage = function(event) {
var data = JSON.parse(event.data);
document.getElementById("message").innerHTML = data.message;
};
</script>
</body>
</html>
이 클라이언트 예에서는`eventSource` 객체를 생성하고 서버에서 데이터를 가져올 URL을 지정합니다 (여기서`push.php`). 서버가 새 데이터를 푸시하면`onmessage '이벤트가 시작되고 수신 된 데이터가 웹 페이지에 구문 분석되고 표시됩니다.
이 기사의 도입을 통해 PHP를 사용하여 서버 측 푸시 및 실시간 통신을 구현하는 방법을 배웠습니다. SSE (Server-Sent Events) 기술을 통해 복잡한 WebSocket 구성이 필요없이 실시간 업데이트 된 데이터를 클라이언트에 쉽게 푸시 할 수 있습니다. SSE는 실시간 데이터 푸시 기능을 구축하기위한 간단하고 효율적인 솔루션을 제공합니다.
이 기술의 적용은 웹 응용 프로그램의 실시간 상호 작용성을 향상시킬 수있을뿐만 아니라 서버의 부담을 효과적으로 줄일 수 있으며 실시간 업데이트가 필요한 다양한 시나리오에 적합합니다. 이 기사가 PHP 실시간 커뮤니케이션을 실현하는 데 도움이되기를 바랍니다.