Bonjour,
dans mon script php je manipule des chaine de caractères sous format xml avec simpleXML,ces informations récupérées via des cartes video,quand il y a juste une carte à traiter(une carte avec scan_agent='1',le script marche très bien,mais quand je veux tester sur trois cartes il m'envoie les erreurs suivantes
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
PHP Warning:  SimpleXMLElement::__construct(): Entity: line 15: parser error : XML declaration allowed only at the start of the document in /var/www/dtinv/script_agent.php on line 46
PHP Warning:  SimpleXMLElement::__construct(): <?xml version='1.0' encoding='ISO-8859-1' ?> in /var/www/dtinv/script_agent.php on line 46
PHP Warning:  SimpleXMLElement::__construct():      ^ in /var/www/dtinv/script_agent.php on line 46
PHP Warning:  SimpleXMLElement::__construct(): Entity: line 16: parser error : Extra content at the end of the document in /var/www/dtinv/script_agent.php on line 46
PHP Warning:  SimpleXMLElement::__construct(): <Cartes> in /var/www/dtinv/script_agent.php on line 46
PHP Warning:  SimpleXMLElement::__construct(): ^ in /var/www/dtinv/script_agent.php on line 46
PHP Fatal error:  Uncaught exception 'Exception' with message 'String could not be parsed as XML' in /var/www/dtinv/script_agent.php:46
Stack trace:
#0 /var/www/dtinv/script_agent.php(46): SimpleXMLElement->__construct('<?xml version='...')
#1 {main}
  thrown in /var/www/dtinv/script_agent.php on line 46
je n'arrive pas à identifier c'est quoi l'erreur voici le code
Code : 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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
 
<?php
//On définit les 4 variables nécessaires à la connexion MySQL :
	$hostname = "localhost";
	$user     = "root";
	$password = "infra44";
	$nom_base_donnees = "dtinv";
//Connexion permanente au serveur MySQL : mysql_Pconnect
	$conn = mysql_pconnect($hostname, $user, $password) or die(mysql_error());
//Choix de la base sur laquelle travailler
	mysql_select_db($nom_base_donnees, $conn);
 
//On récupère les données des tables dtinv_spooler & dtinv_pc_spooler
 
	$req = "SELECT Id_spooler, no_adaptateur, scan_agent, dtinv_type_carte.Type, dtinv_spoolers.`id_bandeau _spooler`,IP
	FROM dtinv_spoolers JOIN dtinv_pc_spoolers USING ( `id_pc_spooler` )
	JOIN dtinv_type_carte USING (`id_type`)
	WHERE scan_agent='1' ";
 
	//$dataset = mysql_query($req);
	$result = mysql_query($req) or die($req."<br />\n".mysql_error());
	$total  = mysql_num_rows($result);
 
	if($total) 
	{
		 while($row = mysql_fetch_array($result)) 
		 {
			echo 'carte '.$row['Type'].' connecté sur bandeau n°: '.$row['id_bandeau _spooler'].'  ';
			$ip = $row['IP'];
			$n_carte = $row['no_adaptateur'];
			$id_spo = $row['Id_spooler'];
			//On récupère les données xml
		 	$command = 'zabbix_get -s'.$ip.' -k dektecAgent['.$n_carte.']';
			exec($command, $output, $return_var);
			var_dump($output, $return_var);
			$chaine = implode("\n",$output);		
			echo"\n";
 
			//...............
			$cartes = new SimpleXMLElement($chaine);	
			$txt = (String)$cartes->Carte->asXML();
			$xml = simplexml_load_string($chaine);
			$inUse = (int)$cartes->Carte[0]->Api_in_use;
 
			If ($inUse == 1)  //si la carte est utilisée par streamXpress
			{		
 
				$req_d = "INSERT INTO dtinv_log_agent VALUES (DEFAULT,$id_spo,NOW(),NULL,$inUse,'Carte en utilisation')";			
				$dataset = mysql_query($req_d) or die($req_d.mysql_error());
				$id_log = mysql_insert_id();
 
			       if($dataset)
				{
					echo("Données Insérées avec succès\n") ;
				}
				else
				{
					echo("L'opération a échouée") ;
				}
				$req1 = "DELETE FROM dtinv_last_log"; 
				$req2 = "INSERT INTO dtinv_last_log VALUES ($id_spo,$id_log)";
				$dataset1 = mysql_query($req1) or die($req1.mysql_error());
				$dataset2 = mysql_query($req2) or die($req2.mysql_error());
 
			}	
			ElseIf ($inUse == 0) //si la carte n'est pas utilisée par streamXpress
			{
 
				$freq = (FLOAT)$cartes->Carte[0]->Frequence;
				$req_u = "INSERT INTO dtinv_log_agent VALUES (DEFAULT,".$id_spo.",NOW(),".$freq.",".$inUse.",'".mysql_escape_string($txt)."')"; 
				$dataset = mysql_query($req_u) or die($req_u.mysql_error());
				$id_log = mysql_insert_id();
				if($dataset)
				{
					echo("Données Insérées avec succès\n") ;
				}
 
				else
				{
					echo("L'opération a échouée") ;
				}
				$req1 = "DELETE FROM dtinv_last_log"; 
				$req2 = "INSERT INTO dtinv_last_log VALUES ($id_spo,$id_log)";
				$dataset1 = mysql_query($req1) or die($req1.mysql_error());
				$dataset2 = mysql_query($req2) or die($req2.mysql_error());
 
 
			}
 
				mysql_close();
 
 
		}
	}
?>
Merci d'avance pour vos idées