웹의 마지막 시간을 온라인과 아두 이노와 아파치 웹 서버와 쇼 "온라인"또는 "오프라인"사이에서 연결을 모니터링하려면 브라우저.
나는 그것을 할 방법 : HTTP POST를 사용하여 내 아두 이노가 하트 비트를 전송하는
heartbeat.php에 있습니다. heartbeat.php의 시작 부분에서 세션 변수를 설정하고 MySQL 데이터베이스에 현재 타임 스탬프를 저장 한 다음 index.php으로 리디렉션합니다.
heartbeat.php는
<?php
session_start();
$_SESSION['hb'] = 1;
include("connect.php");
$link=connection();
$sql="UPDATE heartbeat SET time=NOW() WHERE 1";
mysql_query($sql,$link);
header("Location: index.php");
?>
의 index.php에서 자바 스크립트는 HTML 본문 내용으로 자동 새로 고침 및로드 healthcheck.php을 수행합니다. healthcheck.php에서
<script>
$(document).ready(function() {
var refreshId = setInterval(function() {
$("#content").load("healthcheck.php");
}, 1000);
$.ajaxSetup({ cache: false });
});
</script>
스크립트는 시스템이 온라인 여부를 확인하는 세션 변수를 확인합니다. 시스템이 오프라인 인 경우 마지막 온라인 시간을 쿼리하고 브라우저에 표시합니다.
healthcheck.php
<?php
session_start();
include("connect.php");
if(isset($_SESSION['hb']))
{
echo '<h1>System Online!!!</h1>';
unset($_SESSION['hb']);
}
else
{
echo '<h1>System Offline!!!</h1>';
$link=connection();
$result=mysql_query("SELECT * FROM heartbeat", $link);
while($row=mysql_fetch_array($result))
{
printf("Last Online: %s", $row["time"]);
}
}
?>
문제 :
나는 그것이 "오프라인으로 변하기 전에, 나는"온라인 "을 볼 수 있습니다 내 PC의 브라우저를 사용하여 로컬 호스트/heartbeat.php를 찾아 "마지막 온라인 시간 표시와 함께, 이것은 내가 Arduino를 사용하여 달성하고자하는 것입니다.
그러나 Arduino로 스크립트를 테스트하면 항상 "오프라인"으로 표시되고 마지막 온라인 시간은 새로 고침 간격에 따라 업데이트됩니다.
나는이 변수가 arduino 자체에 설정되어 있기 때문에 내 PC의 브라우저가 "오프라인"을 표시하지 않으므로 틀렸다고 정정 해 주시기 바랍니다.
이 온라인 모니터링 기능을 효과적으로 구현하기위한 조언이나 제안을 찾고 있는데, 어떤 제안이라도 환영하며 높이 평가합니다.
내가 틀렸다면 정정하되 세션 변수가 클라이언트별로 데이터를 저장하기 때문에 세션에 arduino에서 서버로 설정 한 세션 변수가 세션의 세션 변수와 다르다고 생각합니다. PC 웹 브라우저에서 서버로. –
글쎄, ICMP/Ping을 arduino 호스트에 보내는 프로그램을 만들면 대답하지 않을 때 "오프라인"으로 식별해야하는 이유는 무엇입니까? 문제가 적고 Arduino에 또 다른 책임을 추가하지 않아도됩니다. – zmo
@ til_b 네 말이 맞아요. 세션 변수의 개념이 이전에 잘못되어있어 막혔어. –