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
} |