高级想法:我有一个微控制器,可以通过 http 请求连接到我的站点...我想在数据库中记录更改后立即向设备提供响应...
由于终端设备是客户端,即微控制器...我不知道无需设置端口转发即可将数据传递给客户端的方法...这是非常不希望的...尝试发送时出现问题从外部网络到内部网络的数据... A. 端口转发或 B 让客户端设备启动请求,这使我想到让设备向文件发送 http 请求以轮询更改
更新:
非常感谢奥利琼斯。我在这里暗示了他的一些建议。
Jason McCreary 建议修改列,这是一个很大的改进,因为它应该提高速度和可靠性......好建议!:)
如果在此示例中存在数据库过度工作的问题,
则以下操作可能会起作用...当数据插入数据库时,更改将写入文件...然后有循环
不断检查该文件是否有更新....想法?
我有table1
并且我想查看自上次检查以来是否更新了特定行(基于 UID/键),并且如果记录投注更新,则持续检查 60 秒...
我想我可以使用 INFORMATION_SCHEMA 数据库来做到这一点。
该数据库包含有关表、视图、列等的信息。
尝试解决方案:
<?php
$timer = time() + (10);//add 60 seconds
$KEY=$_POST['KEY'];
$done=0;
if(isset($KEY)){
//loign stuff
require_once('Connections/check.php');
$mysqli = mysqli_connect($hostname_check, $username_check, $password_check,$database_check);
if (mysqli_connect_errno($mysqli))
{ echo "Failed to connect to MySQL: " . mysqli_connect_error(); }
//end login
$query = "SELECT data1, data2
FROM station
WHERE client = $KEY
AND noted = 0;";
$update=" UPDATE station
SET noted=1
WHERE client = $KEY
AND noted = 0;";
while($done==0) {
$result = mysqli_query($mysqli, $query);
$update = mysqli_query($mysqli, $update);
$row_cnt = mysqli_num_rows($result);
if ($row_cnt > 0) {
$row = mysqli_fetch_array($result);
echo 'data1:'.$row['data1'].'/';
echo 'data2:'.$row['data2'].'/';
print $row[0];
$done=1;
}
else {
$current = time();
if($timer > $current){ $done=0; sleep(1); } //so if I haven't had a result update i want to loop back an check again for 60seconds
else { $done=1; echo 'done:nochange';}//60seconds pass end loop
}}
mysqli_close($mysqli);
echo 'time:'.time();
}
else {echo 'error:nokey';}
?>
这是提高速度和提高可靠性的适当方法和建议吗