Current Location: Home> Latest Articles> How to Implement Server-Side Push and Real-Time Communication with PHP (SSE Tutorial)

How to Implement Server-Side Push and Real-Time Communication with PHP (SSE Tutorial)

M66 2025-07-08

How to Implement Server-Side Push and Real-Time Communication with PHP

With the rapid development of technology and the increasing use of the internet, real-time communication has become an essential part of web applications. Server-side push enables developers to send real-time updates to the client without requiring the client to make requests. By allowing real-time interaction between the server and the client, it enhances user experience and application performance.

In PHP, several technologies can be used to implement server-side push and real-time communication, such as WebSocket, Long Polling, and Server-Sent Events (SSE). This article will focus on how to use Server-Sent Events (SSE) to achieve this functionality.

What is Server-Sent Events (SSE)?

Server-Sent Events (SSE) is a technology based on the HTTP protocol that allows the server to push data to the client. Unlike WebSocket, SSE is a one-way communication method, where the data flow is from the server to the client. This technology is ideal for use cases like real-time notifications, live updates, and dynamic data displays.

Implementing SSE Push in PHP

To start, we need to set up an SSE push service in PHP. Below is a simple PHP code example:

<?php
header("Content-Type: text/event-stream");
header("Cache-Control: no-cache");
header("Connection: keep-alive");

// Loop to push data to the client
while (true) {
    // Get data from a database or other data source
    $data = getData();

    // Send data to the client
    echo "data: " . json_encode($data) . "\n\n";
    ob_flush();
    flush();

    // Control data push speed
    sleep(1);
}

// Function to get data
function getData() {
    // Fetch data from a database or other source as needed
    $data = array(
        'message' => 'Hello, SSE!',
        'time' => time()
    );
    return $data;
}
?>

In this example, we first set the HTTP headers to tell the browser that the response is an SSE data stream. Then, in an infinite loop, we fetch data from a data source (e.g., a database), encode it into JSON format, and send it to the client using PHP's `echo` statement. After each data transmission, we call `ob_flush()` and `flush()` to ensure that the data is sent to the client promptly. The `sleep()` function is used to control the speed of data pushing.

Receiving Data on the Client Side

To receive the data pushed from the server, the client needs to use the `EventSource` object in JavaScript to establish a connection to the server. Below is a simple HTML and JavaScript code example:

<!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>

In this client-side example, we create an `EventSource` object and specify the URL from which the data will be received (in this case, `push.php`). Whenever the server pushes new data, the `onmessage` event is triggered, the data is parsed, and displayed on the webpage.

Conclusion

Through this tutorial, we've learned how to implement server-side push and real-time communication in PHP. With Server-Sent Events (SSE), we can easily push real-time updates to the client without the need for complex WebSocket setups. SSE offers a simple and efficient solution for building real-time data push functionality.

This technology enhances the real-time interactivity of web applications and reduces server load, making it ideal for applications that require frequent updates. We hope this guide helps you implement real-time communication in your PHP applications.