Vinnaren i pepparkakshustävlingen!
2018-11-05, 11:19
  #1
Avstängd
Tankade denna diagram: http://www.ebrueggeman.com/phpgraphlib/examples

Så ser index filen ut och den skapar färdiga diagram.

Kod:
<?php
include('phpgraphlib.php');
$graph = new PHPGraphLib(650,200);
$data = array("1" => .0032"2" => .0028"3" => .0021"4" => .0033
"5" => .0034"6" => .0031"7" => .0036"8" => .0027"9" => .0024
"10" => .0021"11" => .0026"12" => .0024"13" => .0036
"14" => .0028"15" => .0025);
$graph->addData($data);
$graph->setTitle('PPM Per Container');
$graph->setBars(false);
$graph->setLine(true);
$graph->setDataPoints(true);
$graph->setDataPointColor('maroon');
$graph->setDataValues(true);
$graph->setDataValueColor('maroon');
$graph->setGoalLine(.0025);
$graph->setGoalLineColor('red');
$graph->createGraph();
?>

Jag skulle vilja ha en diagram som uppdateras var 10 sekund och som hämtar 1 siffra från en extern fil. Filen är en enkel html fil utan nånting endast en random siffra. Siffran ändras hela tiden.

Kod:
<?php
include('phpgraphlib.php');
$graph = new PHPGraphLib(650,200);

//// Uppdateras var 10 sekund
$data = array("1" => include 'siffra.php' [wait 10 sek"2" => include 'siffra.php' [wait 10 sek"3" => include 'siffra.php');

$graph->addData($data);
$graph->setTitle('PPM Per Container');
$graph->setBars(false);
$graph->setLine(true);
$graph->setDataPoints(true);
$graph->setDataPointColor('maroon');
$graph->setDataValues(true);
$graph->setDataValueColor('maroon');
$graph->setGoalLine(.0025);
$graph->setGoalLineColor('red');
$graph->createGraph();
?>

Bästa lösning hade varit något sådant men vet ej hur jag ska sätta ihop det.

Kod:
<?php
include('phpgraphlib.php');
$graph = new PHPGraphLib(650,200);

$data = array("1" => include 'siffra.php' [wait 10 seksen uppdateras nästa);

$graph->addData($data);
$graph->setTitle('PPM Per Container');
$graph->setBars(false);
$graph->setLine(true);
$graph->setDataPoints(true);
$graph->setDataPointColor('maroon');
$graph->setDataValues(true);
$graph->setDataValueColor('maroon');
$graph->setGoalLine(.0025);
$graph->setGoalLineColor('red');
$graph->createGraph();
?>

Kan nån hjälpa mig med en lösning?
__________________
Senast redigerad av Mountain1337 2018-11-05 kl. 11:23.
Citera
2018-11-05, 12:28
  #2
Moderator
Protons avatar
Citat:
Ursprungligen postat av Mountain1337
Tankade denna diagram: http://www.ebrueggeman.com/phpgraphlib/examples

Så ser index filen ut och den skapar färdiga diagram.

Kod:
<?php
include('phpgraphlib.php');
$graph = new PHPGraphLib(650,200);
$data = array("1" => .0032"2" => .0028"3" => .0021"4" => .0033
"5" => .0034"6" => .0031"7" => .0036"8" => .0027"9" => .0024
"10" => .0021"11" => .0026"12" => .0024"13" => .0036
"14" => .0028"15" => .0025);
$graph->addData($data);
$graph->setTitle('PPM Per Container');
$graph->setBars(false);
$graph->setLine(true);
$graph->setDataPoints(true);
$graph->setDataPointColor('maroon');
$graph->setDataValues(true);
$graph->setDataValueColor('maroon');
$graph->setGoalLine(.0025);
$graph->setGoalLineColor('red');
$graph->createGraph();
?>

Jag skulle vilja ha en diagram som uppdateras var 10 sekund och som hämtar 1 siffra från en extern fil. Filen är en enkel html fil utan nånting endast en random siffra. Siffran ändras hela tiden.

Kod:
<?php
include('phpgraphlib.php');
$graph = new PHPGraphLib(650,200);

//// Uppdateras var 10 sekund
$data = array("1" => include 'siffra.php' [wait 10 sek"2" => include 'siffra.php' [wait 10 sek"3" => include 'siffra.php');

$graph->addData($data);
$graph->setTitle('PPM Per Container');
$graph->setBars(false);
$graph->setLine(true);
$graph->setDataPoints(true);
$graph->setDataPointColor('maroon');
$graph->setDataValues(true);
$graph->setDataValueColor('maroon');
$graph->setGoalLine(.0025);
$graph->setGoalLineColor('red');
$graph->createGraph();
?>

Bästa lösning hade varit något sådant men vet ej hur jag ska sätta ihop det.

Kod:
<?php
include('phpgraphlib.php');
$graph = new PHPGraphLib(650,200);

$data = array("1" => include 'siffra.php' [wait 10 seksen uppdateras nästa);

$graph->addData($data);
$graph->setTitle('PPM Per Container');
$graph->setBars(false);
$graph->setLine(true);
$graph->setDataPoints(true);
$graph->setDataPointColor('maroon');
$graph->setDataValues(true);
$graph->setDataValueColor('maroon');
$graph->setGoalLine(.0025);
$graph->setGoalLineColor('red');
$graph->createGraph();
?>

Kan nån hjälpa mig med en lösning?
Enklaste sättet att göra det du vill åstadkomma är med ett AJAX-anrop till servern som får hämta ett helt nytt diagram var 10de sekund, samt uppdatera gränssnittet därefter.

Ett mer opålitligt sätt i sammanhanget är om du lyckas implementera en server push enligt http://www.howtocreate.co.uk/php/serverpushdemo.php men hade jag gjort det hade jag valt AJAX-lösningen eftersom den har stöd i typ alla läsare(beroende på hur den implementeras såklart).
Citera
2018-11-05, 12:59
  #3
Medlem
Ja, en AJAX-lösning är troligen det du söker. Jag hade nog dessutom hanterat så mycket som möjligt på klientsidan. Chart.js är ett lättanvänt men kraftfullt verktyg för detta. Då får du responsiva grafer med moderna HTML 5-element. Ett tips!
Citera
2018-11-05, 23:31
  #4
Medlem
lasternassummas avatar
Varför inte bara köra en HTML refresh på hela sindan?

HTML-kod:
<head>
  <meta http-equiv="refresh" content="10">
</head>

Citera
2018-11-06, 12:40
  #5
Medlem
Citat:
Ursprungligen postat av lasternassumma
Varför inte bara köra en HTML refresh på hela sindan?

HTML-kod:
<head>
  <meta http-equiv="refresh" content="10">
</head>


Då måste hela sidan uppdateras igen, istället för att bara uppdatera diagrammet. Visst fungerar den lösningen helt okej, men som användare skulle jag föredra en AJAX-lösning.
Citera
2018-11-06, 12:59
  #6
Medlem
lasternassummas avatar
Citat:
Ursprungligen postat av Nich
Då måste hela sidan uppdateras igen, istället för att bara uppdatera diagrammet. Visst fungerar den lösningen helt okej, men som användare skulle jag föredra en AJAX-lösning.

Vad som är bäst och enklast beror på några faktorer:
– Om bilden utgör huvuddelen av sidan så spelar det ingen större roll om man laddar ner några procent till med HTML-kod.
– Om servern och sidinnehållet är och genereras effektivt (t.ex. laddas på mindre än 0,1 sekund) så spelar det kanske ingen roll att sidan laddas om.

Man bör ju också väga in skillnaden i vilken insats det medför att lägga till en rad HTML-kod i headern och till att gå över till AJAX.

Om AJAX redan finns och TS kan det så är det kanske inte ett så stort steg, men det vet vi ju inte.

En fördel med att inte ladda om sidan är ju att man kan slippa att användaren upplever uppdateringen som "flimrig". Det kan IOFS lösas genom att man lägger bilden i en separat frame som laddas om. Bara att bildkod innehåller "height" och "width" minskar ju "flimrigheten" en hel del. Det är ju obligatoriskt (enligt W3C) sedan många år, men jag irriteras alltför ofta fortfarande av sidor som hoppar runt tills alla bilder laddats. Helt i onödan!

Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback