• Cart0
    Ialt 0.00 DKK
    Your shopping cart is empty!
    Tax:
    Discount:
    Total:

Datapolling over netværket med PHP

Bedøm denne artikel
(0 bedømmelser)

En Webside viser mange enheder...

Netværkskommunikation mellem en browser og en terminalenhed ved hjælp af klientbaserede Web-teknikker (f.eks JavaScript / AJAX, Java applet ) er kun mulig, hvis terminalenheden selv varetager spørgekriterierne på websiden. Disse sikkerhedsrestriktioner i forbindelse med disse Web-teknikker begrænser dataudveksling mellem browseren ( webside indlæst af terminalenhed A ) og andre terminalenheder (B , C, ...).

Motherbox php data request

 

Hvis flere enheder skal tilgås på samme tid , f.eks med henblik på at visualisere temperaturer, som er målt i flere kølerum, er central adgang til en kørende software (f.eks PHP ) påkrævet . Hvis disse forudsætninger er til stede, er de tidligere nævnte begrænsninger ikke længere gældende. Iværksættelse af kommunikation er nu en opgave for Web serveren, som er bemyndiget til at oprette forbindelse til terminalpunkter.

Mål

Det aktuelle eksempel beskriver, hvordan PHP bruges til at etablere en socket-forbindelse til en datakilde. En måleværdi skal derefter indhentes via denne forbindelse, som til slut vises på websiden. De nødvendige parametre (IP-adresse , HTTP port og nummeret på målekanalen ) kommer fra en form og sendes, når siden åbnes via Post.

Som en webserver med PHP kan Motherbox anvendes. Datakilden med målepunkter for temperatur, relativ luftfugtighed og lufttryk er en Web-Thermo-Hygrobarograph.

Kun en PHP-fil er nødvendig for at gennemføre dette eksempel, som udstyres med de nødvendige parametre, der skal til for at anmode om nye data. Du kan downloade eksempelfilen her.

Gem eksempelfilen temperature_request.php i mappen Websites på Motherbox . Så kan du benytte følgende URL fra enhver browser:

http:// / websites / temperature_request.php

e-50510-00-pide-000

Kildetekst

I iniatiatory PHP-området bliver variablerne initialiseret. Hvis websiden åbnes ved at indtaste webadressen i browseren, sendes der ingen værdier for IP-adresse, HTTP port og kanalnummer via Post. I dette tilfælde er variablerne fyldt med faste værdier. Hvis siden er åbnet med knappen Request Data på websiden, bliver de værdier, brugeren har indtastet, sendt og tildelt variablerne.

!--?php

if(isset($_POST["ip"])) {
  $ip = $_POST["ip"];
  $port = $_POST["port"];
  $slot = $_POST["slot"];
} else {
  $ip = "";
  $port = "80";
  $slot = 1;
}

?>

I header-området er tegnsættet angivet, og CSS bruges til at bestemme indretning og udformning af centrale HTML-komponenter.

Den form, som hedder body, bruges til indtastning af brugerens data. Tekstfelterne ip og port er for IP-adressen og HTTP port til det ønskede web -IO. Alternativknapperne slot specificerer den ønskede kanal. PHP bruges til enten at udfylde disse felter på output med de faste værdier eller de aktuelle ønskede værdier. Hvis skemaet er sendt, bliver de indtastede data sendt til serveren med Post.


                                                                                      
IP-Address:
        input name="ip" type="text" value="" />
      
Port:
          input name="port" type="text" value="" />
        
Channel:
         name="slot" type="radio"
          value="1" />1 
         name="slot" type="radio"
          value="2" />2 
         name="slot" type="radio"
          value="3" />3 
      

        
      

Meddelelsehåndteringen foregår i PHP-området i et DIV element measurement. Hvis der sendes en parameter ved åbningen, vil der blive etableret en socket-forbindelse til den angivne IP-adresse og portnummer. En timeout i 3s er defineret for oprettelse af forbindelsen. I tilfælde af fejl vil outputteksten være Connection Error. Tegnet @ før fsockopen kommandoen undertrykker en fejlmeddelelse genereret af PHP. Hvis forbindelsen er etableret med succes, benyttes anmodningen Get /single efterfulgt af det ønskede kanalnummer til at anmode om den målte værdi . Svaret læses nu tegn for tegn , indtil en 0- byte er modtaget, som angiver slutningen af svaret fra Web-IOen. Denne sammensatte tegnstreng ved modtagelsen bliver nu omdannet til et array , hvor semikolon bruges som separator for de enkelte elementer . Det sidste element i array er den målte værdi, inklusive enheder , og det næstesidste element er navnet på kanalen . Begge disse er output.

!--?php

if($ip) {
  $handle = @fsockopen($ip, $port, $errno, $errstr, 3);
  if (!$handle)
    echo "Connection Error!";
  else {
    $response = "";

    fwrite($handle, "GET /single" . $slot);
    do {
      $data = fgets($handle, 2);
      if(ord($data) != 0)
        $response = $response . utf8_encode($data);
      else
        break;
    } while(true);
    fclose($handle);

    $parts = explode(";", $response);
    echo "" . $parts[count($parts)-1] . " (" . $parts[count($parts)-2] . ")";
  }
} else
  echo "---";

?>

Hvis siden er åbnet uden en parameter, er der ingen kommunikation etableret, kun tre streger (---) er output.

Resumé

Motherbox-enheden med sine PHP-habile webserver-faciliteter tilbyder alt, hvad man behøver for at kommunikere med andre netværkskomponenter. Enheden giver adgang til målingsværdier eller data fra forskellige terminalenheder fra et centralt punkt , så de kan konsolideres på en webside. Denne gateway-funktion er også nyttig for at få adgang til forskelligt terminaludstyr i private netværk udefra. Alt, du skal gøre, er at oprette NAT routing for pure.box i stedet for at skabe separat adgang for hver af terminalenhederne.

Læst 393 gange Senest ændret tirsdag, 23 april 2019 02:08

Skriv en kommentar

Vær sikker på, at du indtaster al krævet information, markeret med en stjerne (*). HTML kode tillades ikke.