问题描述
请原谅,我对后端开发还很陌生。
我试图实现的目标很简单。我想向我的服务器发送一个POST请求。举个例子; www.domain.com/api.php?id=foo
并使用该值用该参数更新我的SSE。但我似乎无法弄清楚。我想我需要以某种方式将该值存储在数据库或文本文件中?为简单起见,最好在文本文件中。
我现在所拥有的:
HTML文件:
<!DOCTYPE html>
<html>
<body>
<h1>Getting server updates</h1>
<div id="result"></div>
<script>
if(typeof(EventSource) !== "undefined") {
var source = new EventSource("demo_sse.PHP");
source.onmessage = function(event) {
document.getElementById("result").innerHTML += event.data + "<br>";
};
} else {
document.getElementById("result").innerHTML = "Sorry,your browser does not support server-sent events...";
}
</script>
</body>
</html>
<?PHP
header('Content-Type: text/event-stream');
header('Cache-Control: no-cache');
$test = "One";
echo "data: Page: {$test}\n\n";
flush();
?>
所以我的问题是:如何从POST请求中更改变量“ test”的值,以便更新SSE?
现在它可以完美工作,如果我更改PHP文件中的值,它将开始在HTML中吐出来。但是,如何通过外部调用(例如POST调用)更改该值?
谢谢!并且让我知道是否需要澄清。
解决方法
好的,所以我设法使其与SQL数据库一起使用。 :)这是我的解决方案:
<?php
header('Content-Type: text/event-stream');
header('Cache-Control: no-cache');
// QUERY THE DATABASE FOR CURRENT PAGE NUMBER
$db = new mysqli($host,$username,$password,$database_name); // connect to the DB
$query = $db->prepare("SELECT number FROM page WHERE itemId=1"); // prepate a query
$query->execute(); // actually perform the query
$result = $query->get_result(); // retrieve the result so it can be used inside PHP
$r = $result->fetch_array(MYSQLI_ASSOC); // bind the data from the first result row to $r
// ECHO SERVER SENT EVENT
$pageNumber = $r['number'];
echo "data: Page: {$pageNumber}\n\n";
flush();
// UPDATE QUERY BASED ON GET PARAMATERS
$siteURL = $_GET['page'];
$updateQuery = $db->prepare("UPDATE `page` SET `number` = '$siteURL' WHERE `page`.`itemId` = 1;");
$updateQuery->execute();
?>