Bonjour à tous,

Et oui je sorts encore les rames pour ce qui est de la réplication de bases Mysql.

Et dans le script ci-dessous, j'ai une erreur de type :

Undefined offset: 2 in C:\wamp\www\dbsync\test2.php on line 72
Undefined offset: 1 in C:\wamp\www\dbsync\test2.php on line 72
The question is : que faire dans ce cas ?

Voici le script :

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
96
97
98
99
<html>
<head>
<title> Online Mysql Server status </title>
</head>
<body>
<form name="ShowStatus" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">
<br/>
<table border=1 align=center>
<tr align=center bgcolor=gray><td colspan=2><b> Online DB Server Status </b></td> </tr>
 
 
<?php 
if(isset($_POST['server']))      $server=$_POST['server'];
else      $server="";
 
?>
 
<tr><td align=centre> Select Server: <select name="server">
<option value="s1" <?php if ($server == "s1") echo "selected"; ?> > Server 1 
<option value="s2" <?php if ($server == "s1") echo "selected"; ?> > Server 2 
<option value="s3" <?php if ($server == "s1") echo "selected"; ?> > Server 3
<option value="s4" <?php if ($server == "s1") echo "selected"; ?> > Server 4 
</select> </td> 
 <td align=centre> <input type=submit name='show' value='Show Status'></td></tr>
</form>
</table>
 
<?php 
$serverUp=1; ## if any of your server not configured, set this variable to 0 below
$serverString="localhost"; ## server name
$serverIP="192.168.16.16"; ## default IP, anyhow will be changed later
$dbuser="bla"; 
$dbpassword="bla"; 
 
$imgShow="<img src='led-green.gif' />";
 
if ($_SERVER['REQUEST_METHOD'] == 'POST'){
	switch($_POST['server']){
		case "s1":
		 $serverString="Server 1"; 
		 $serverIP="IP1";
		 break;
		case "s2":
		 $serverString="Server 2"; 
		 $serverIP="IP2";
		 break;
		case "s3":
		 $serverString="Server 3"; 
		 $serverIP="IP3";
		 break;
		case "s4":
		 $serverString="Server 4"; 
		 $serverIP="IP4";
		 $serverUp=0;
		 break; 
	}
 
?>
	<br/>
	<table border=1 align=center width=50%>
	<tr align=center bgcolor=gray><td colspan=4><b> Status de <?php echo $serverString." : ". $serverIP; ?> </b></td> </tr>
	<tr > <th bgcolor=lightgray> Status </th> <th bgcolor=lightgray > Replication </th> <th bgcolor=lightgray> Delay </th> <th bgcolor=lightgray> Erreur </th> </tr>
	<?php
	if (!$serverUp) {
	?>
			<tr> <td align=center colspan=4> Ce serveur n'est pas encore configur&eacute;! </td> </tr>
	<?php 
	}
	else {
		$contactAdmin="<a href='mailto:blabla@yourmail.com?subject=Replication issue in $serverString'> Contact Admin </a>";	
		$RepStatus = `mysql -h $serverIP -u $dbuser -p$dbpassword -e "show slave status\G;" | egrep "Slave_IO_Running: | Slave_SQL_Running: | Seconds_Behind_Master:" | cut -d':' -f2`; $RepStatus= trim($RepStatus);  
		list($RepRun, $SqlRun, $RepDelay) = preg_split("/ /",$RepStatus);
		 $RepRun = trim($RepRun);
		 $SqlRun = trim($SqlRun);
		 $RepDelay = trim($RepDelay);
 
//		echo "<br/> Reprun=$RepRun, IO Run =$SqlRun, Replication delay =$RepDelay";
 
		if($RepRun == "Yes") { $RepRun = "OK"; $contactAdmin=""; } else { $RepRun = "Replication (IO) Not Running!"; $imgShow="<img src='led-red.gif' />"; }
		if($SqlRun == "Yes") { $SqlRun = "None"; $contactAdmin=""; } else {$SqlRun = "SQL thread stopped! "; $imgShow="<img src='led-red.gif' />";}
		if($RepDelay == 0 ) { $RepDelay = "None"; } else { $RepDelay .= " seconds."; $contactAdmin=""; }   
 
 
	?>
		<tr> <td align=center> <?php echo $imgShow; ?> </td> <td align=center> <?php echo $RepRun; ?> </td> <td align=center> <?php echo $RepDelay; ?>  </td> <td align=center> <?php echo $SqlRun; ?>  </td> </tr>
 
	<?php
	if ($contactAdmin != "") { echo "<tr> <td align=center colspan=4> $contactAdmin </td></tr>"; }
 
	} 
 
	?>
	</table> 
<?php
}
?>
 
</html>
</body>


et la ligne 72 correspond à :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
list($RepRun, $SqlRun, $RepDelay) = preg_split("/ /",$RepStatus);

En vous remerciant pour l'aide.