IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Voir le flux RSS

TiranusKBX

L'API EventSource côté serveur(PHP)

Noter ce billet
par , 03/04/2015 à 15h48 (1299 Affichages)
Script retournant au client le dernier message et ne renvois rient tant que celui-ci n'est pas changé
la fréquence de roulement des tests est de 1 fois par seconde

Pour le code de ce script voici le contenus d'exemple du fichier XML
Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
<?xml version="1.0" encoding="UTF-8"?>
<response>
	<id>74</id>
	<data><![CDATA[bla bla bla]]></data>
	<time>1426859138</time>
</response>

et voici le code du script
Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<?php
//fonction d'extraction de donnée d'une balise XML
//c'est moins lourd que d'invoquer la classe XMLSimple
function traitement($text,$balise)
	{
	$mvar = null; 
	preg_match('/<'.$balise.'>(.*)<\/'.$balise.'>/',$text,$mvar);
	return str_replace(array('<![CDATA[',']]>'),array('',''),$mvar[1]);
	}
 
date_default_timezone_set("Europe/Paris");
if(!isset($_GET['room']))die('ERRRRRRRRRRR1');
$file = "noevents/".$_GET['room'].".xml";
if(!is_file($file))die('ERRRRRRRRRRR2');
header("Content-Type: text/event-stream\n\n");
$md5 = "";
$max = ini_get('max_execution_time') - 2;//definition du temps d'execution maximum du script
for($i=0; $i< $max+1;$i++) {
	$var = md5_file ($file);
	if($var != $md5)
		{
		$md5 = $var;
		//Début Bloc
		echo "event: change\n";
		$xml = file_get_contents($file);
		$tab = array();
		$tab['id'] = null; traitement($xml,'id',$id);
		$tab['data'] = null; traitement($xml,'data',$no);
		$tab['time'] = null; traitement($xml,'time',$time);
		echo 'data: '.json_encode($tab);// ici j'envoie des donnés au format JSON ce qui donne -> {id:"74",data:"bla bla bla",time:"1426859138"}
		echo "\n\n";
		// Fin de bloc
		}  
	ob_flush(); flush();//force la sortie texte
  sleep(1);//attente de 1 seconde
}

Voila j'espère que ce code vous à aidé

Envoyer le billet « L'API EventSource côté serveur(PHP) » dans le blog Viadeo Envoyer le billet « L'API EventSource côté serveur(PHP) » dans le blog Twitter Envoyer le billet « L'API EventSource côté serveur(PHP) » dans le blog Google Envoyer le billet « L'API EventSource côté serveur(PHP) » dans le blog Facebook Envoyer le billet « L'API EventSource côté serveur(PHP) » dans le blog Digg Envoyer le billet « L'API EventSource côté serveur(PHP) » dans le blog Delicious Envoyer le billet « L'API EventSource côté serveur(PHP) » dans le blog MySpace Envoyer le billet « L'API EventSource côté serveur(PHP) » dans le blog Yahoo

Mis à jour 03/04/2015 à 16h34 par Bovino

Catégories
Javascript , PHP , Développement Web

Commentaires