Gå til innhold

Streame innhold fra databasen


Anbefalte innlegg

Jeg leker litt med et script, hvor jeg ønsker å streame innhold. Her er koden:

<?php
header('Content-Type: text/event-stream');
header('Cache-Control: no-cache'); // recommended to prevent caching of event data.
/**
* Constructs the SSE data format and flushes that data to the client.
*
* @param string $id Timestamp/id of this connection.
* @param string $msg Line of text that should be transmitted.
*/
function sendMsg($id, $msg) {
 echo "id: $id" . PHP_EOL;
 echo "data: $msg" . PHP_EOL;
 echo PHP_EOL;
 ob_flush();
 flush();
}
$serverTime = time();
sendMsg($serverTime, "test");
?>

 

Jeg ønsker å legge inn innhold fra databasen, der det står "test" med while-loop..osv.. Noen som vet om en måte?

 

På forhånd takk :)

Lenke til kommentar
Videoannonse
Annonse
  • 3 uker senere...

Får jeg spørre hva du egentlig ønsker at scriptet skal gjøre?

Per i dag får du en id: $id og data: test output.

 

Du ønsker egentlig bare å bytte ut "test" med en verdi fra en database?

Endret av TobiasG
Lenke til kommentar

Får jeg spørre hva du egentlig ønsker at scriptet skal gjøre?

Per i dag får du en id: $id og data: test output.

 

Du ønsker egentlig bare å bytte ut "test" med en verdi fra en database?

Ja, stemmer og da er det inkludert rekke koder som mysql_query...osv... Vet du om en løsning på dette?

Lenke til kommentar

Burde stå godt forklart her: http://www.w3schools...ysql_select.asp

Jeg forstår jo det, men hvordan man skal overføre all data inn i sendMsg($serverTime, "Innhold");

 

Slik at data blir oppdatert hele tiden. Skjønner?

 

Sett litt på ajax? F.eks:

 

var data = 'data';
$.ajax({
url: "url.php",
type: "GET",
data: data,
cache: false,
success:
function(html) {
}
});

 

Kombiner dette med litt jquery så er du på vei :)

Endret av Thomas.
Lenke til kommentar

Takk for svar. Mulig jeg forklarer dette dårlig. SSE er det jeg bruker og er noe lignende Web Socket(Html5).. Det vil si at innhold blir streamet uten å oppdatere.

 

Hvis jeg forandrer teksten "innhold" til noe annet og lagrer, så vil innholdet på siden bli automatisk oppdatert ikke som refresh. sendMsg($serverTime, "Innhold");

 

Thomas, Ajax har ikke denne teknologien. :)

Endret av danielrealized
Lenke til kommentar

Takk for svar. Mulig jeg forklarer dette dårlig. SSE er det jeg bruker og er noe lignende Web Socket(Html5).. Det vil si at innhold blir streamet uten å oppdatere.

 

Hvis jeg forandrer teksten "innhold" til noe annet og lagrer, så vil innholdet på siden bli automatisk oppdatert ikke som refresh. sendMsg($serverTime, "Innhold");

 

Thomas, Ajax har ikke denne teknologien. :)

 

Det er akkurat denne teknologien ajax faktisk har.

Lenke til kommentar

Takk for svar. Mulig jeg forklarer dette dårlig. SSE er det jeg bruker og er noe lignende Web Socket(Html5).. Det vil si at innhold blir streamet uten å oppdatere.

 

Hvis jeg forandrer teksten "innhold" til noe annet og lagrer, så vil innholdet på siden bli automatisk oppdatert ikke som refresh. sendMsg($serverTime, "Innhold");

 

Thomas, Ajax har ikke denne teknologien. :)

 

Det er akkurat denne teknologien ajax faktisk har.

Nei, det har den ikke. Det har vært forsøk på å bruke jquery, ajax eller ren javascript, men det er ustabilt. Node.js, Websocket, SSE fungerer greit.

Endret av danielrealized
Lenke til kommentar

Jeg, ser det er gått litt her siden jeg skrev sist, men kan sette meg ned litt i kveld og se om jeg får satt opp en løsning Daniel og innhold streamet konstant fra en db om jeg har forstått det rett. For å si det dummy, så ønsker du altså at db results blir konstant oppdatert i en web, ikke at web konstant oppdaterer en db?

 

Så med en gang det gjøres endringer i db si at $data = "test" om jeg byttet dette til "test2" i db, så skulle websiden endret med en gang også?

aiight?

Lenke til kommentar

Jeg, ser det er gått litt her siden jeg skrev sist, men kan sette meg ned litt i kveld og se om jeg får satt opp en løsning Daniel og innhold streamet konstant fra en db om jeg har forstått det rett. For å si det dummy, så ønsker du altså at db results blir konstant oppdatert i en web, ikke at web konstant oppdaterer en db?

 

Så med en gang det gjøres endringer i db si at $data = "test" om jeg byttet dette til "test2" i db, så skulle websiden endret med en gang også?

aiight?

Jepp, det stemmer :)

 

Her er javascript-delen av SSE:

    function events()  {
	  //$('ul#result').load('includes/last_events.php');
	  $.post('content.php', $('.content').serialize(), function(data) {
	    $('.content').html(data);
	  });
    }

    if (!!window.EventSource) {
	  var source = new EventSource('includes/server.php');
    } else {
	  // Result to xhr polling 
    }
    source.addEventListener('message', function(e) {
	  var test = e.data;
	  $('.content').html(test);
	  retry: 1;
    }, false);
    source.addEventListener('open', function(e) {
    }, false);
    source.addEventListener('error', function(e) {
	  if (e.readyState == EventSource.CLOSED) {
	    // Connection was closed.
	  }
    }, false);

 

Server.php er SSE-scriptet som ligger øverst i tråden

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...