高級別理念: 我有一個微控制器,它可以通過一個HTTP請求連接到我的網站...我想喂設備只要改變在數據庫上指出的響應...查詢,如果自上次檢查一個條目已經改變,不斷檢查時間
由於終端裝置是微即控制器客戶機...林不知道來傳遞數據到客戶端,而無需設置的方法的up端口轉發......這是非常不希望的......當從外部網絡發送數據到內部網絡時出現問題...... 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';}
?>
這是適當的方法和建議,以提高速度並提高可靠性
爲什麼不在表格中只有*修改*列並檢查它? –
什麼是「連續檢查」是什麼意思? 「看一次,然後繼續用重複檢查來錘擊數據庫」? –
@MarcB是的。這就是我的意思...睡覺(2);不能傷害我猜 –