यह काम करने के लिए आप सर्वर की तरफ कुछ चीजें खो रहे हैं।
सबसे पहले, जैसा कि @RiggsFilly ने बताया, आपको कथन में WHERE क्लॉज का उपयोग करने की आवश्यकता है। शर्त यह होनी चाहिए कि ऐसे लेन-देन देखें जो नए . हों पिछले भेजे गए की तुलना में।
उसके लिए, आपको पिछले भेजे गए संदेश के टाइमस्टैम्प का ट्रैक रखना होगा।
सर्वर को केवल तभी संदेश भेजना चाहिए जब क्वेरी, अब शर्त के साथ, परिणाम लौटाती है।
अंत में, नए लेन-देन की जांच करने और यदि पाया जाता है तो संदेश भेजने की पूरी दिनचर्या को एक लूप में रखा जाना चाहिए।
<?php
include 'conn.php'; // database connection
header("Content-Type: text/event-stream");
header("Cache-Control: no-cache");
$query = "SELECT TimeStamp, CardNo FROM transactions WHERE TimeStamp > ?";
$stmt = $conn->prepare($query);
$ts = time();
while(true)
{
if ($result = $stmt->execute([$ts])) {
$row = $result->fetch_assoc();
echo "data: " . $row['CardNo'] . "\n\n";
$ts = $row['TimeStamp'];
flush();
}
sleep(2);
}