Hallo Christian,
als Rückmeldung zu deiner Idee in meiner Umsetzung, es funktioniert, der HTTP wird nicht zyklisch gesendet, nur bei Änderung … (ABER) ...
2016-02-07 15:03:18 210036 EXEC 8287 K03 mit:Computer Ok
2016-02-07 15:03:18 210146 EXEC 8287 K04 THEN:1 Ok
2016-02-07 15:03:18 727205 EXEC 8287 K05 THEN:http://10.0.100.150/%7Edariusz/iCont...omputer&p2=30/ ctx Resource id #29 Ok
2016-02-07 15:04:07 382433 EXEC 8287 K03 mit:Computer Ok
2016-02-07 15:04:07 382536 EXEC 8287 K04 THEN:1 Ok
2016-02-07 15:04:07 597271 EXEC 8287 K05 THEN:http://10.0.100.150/%7Edariusz/iCont...omputer&p2=70/ ctx Resource id #638324 Ok
2016-02-07 15:05:38 977603 EXEC 8287 K03 mit:Computer Ok
2016-02-07 15:05:38 977668 EXEC 8287 K04 THEN:1 Ok
2016-02-07 15:05:39 220748 EXEC 8287 K05 THEN:http://10.0.100.150/%7Edariusz/iCont...omputer&p2=50/ ctx Resource id #1782199 Ok
… LEIDER läuft der Edomi CPU ins unendliche, 100%+ (ROT) ...
als Rückmeldung zu deiner Idee in meiner Umsetzung, es funktioniert, der HTTP wird nicht zyklisch gesendet, nur bei Änderung … (ABER) ...
2016-02-07 15:03:18 210036 EXEC 8287 K03 mit:Computer Ok
2016-02-07 15:03:18 210146 EXEC 8287 K04 THEN:1 Ok
2016-02-07 15:03:18 727205 EXEC 8287 K05 THEN:http://10.0.100.150/%7Edariusz/iCont...omputer&p2=30/ ctx Resource id #29 Ok
2016-02-07 15:04:07 382433 EXEC 8287 K03 mit:Computer Ok
2016-02-07 15:04:07 382536 EXEC 8287 K04 THEN:1 Ok
2016-02-07 15:04:07 597271 EXEC 8287 K05 THEN:http://10.0.100.150/%7Edariusz/iCont...omputer&p2=70/ ctx Resource id #638324 Ok
2016-02-07 15:05:38 977603 EXEC 8287 K03 mit:Computer Ok
2016-02-07 15:05:38 977668 EXEC 8287 K04 THEN:1 Ok
2016-02-07 15:05:39 220748 EXEC 8287 K05 THEN:http://10.0.100.150/%7Edariusz/iCont...omputer&p2=50/ ctx Resource id #1782199 Ok
… LEIDER läuft der Edomi CPU ins unendliche, 100%+ (ROT) ...
PHP-Code:
<?php
require(dirname(__FILE__)."/../../../../main/include/php/incl_lbsexec.php");
set_time_limit(0);
sql_connect();
if ($E=getLogicEingangDataAll($id)) {
restore_error_handler();
error_reporting(0);
if ($socket = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP)) {
if (socket_bind($socket,0,$E[31]['value'])) {
$alterWertE1='';
while (getSysInfo(1)>=1) {
$len = socket_recv($socket,$data,1024,MSG_DONTWAIT); //das MSG_DONTWAIT ist der Trick ;)
if ($len!==false) { // UPD-Paket empfangen: Hier die Auswertung wie gehabt...
} else { // kein UDP-Paket empfangen: Hier könnten z.B. HTTP-Request verarbeitet werden
if ($E=getLogicEingangDataAll($id)) {
$url = "http://".$E[34]['value']."/%7E".$E[33]['value']."/iControl.php?c=";
// L a u t s t ä r k e :
if ($alterWertE1 != $E[20]['value']) {
writeToTraceLog(0,true,'K03 mit:'.$E[35]['value']);
if (!isEmpty($E[35]['value'])==1) {
writeToTraceLog(0,true,'K04 THEN:'.!isEmpty($E[35]['value']));
$ctx=stream_context_create(array('http' => array('timeout' => 3 )));
$r=file_get_contents($url.'apVolume&p1='.$E[35]['value'].'&p2='.$E[20]['value'],0,$ctx);
writeToTraceLog(0,true,'K05 THEN:'.$url.'apVolume&p1='.$E[35]['value'].'&p2='.$E[20]['value'].'/ ctx '.$ctx);
$alterWertE1 = $E[20]['value']; //aktuellen Wert merken für zukünftige Vergleiche
}
}
}
}
}
usleep(1000*100); //z.B. 100ms warten - wichtig, um die CPU-Last zu begrenzen!
}
}
socket_close($socket);
}
sql_disconnect();
?>
Kommentar