habe MySQLData erfolgreich im Einsatz. Da dies mein erster Beitrag hier im Forum ist zunächst mal großes Lob an alle.
Nachdem ich heute weitere Poller ergänzt habe, fand plötzlich keine Aufzeichnung mehr statt. Folgendes ist passiert:
Beim Anlegen eines Pollers habe ich versehentlich eine Variable ausgewählt, die bereits in einem anderen Poller hinterlegt war.
Danach habe ich diesen Poller wieder gelöscht. Mit dem Erfolg, dass die entsprechende Tabellenspalte in der DB gelöscht wurde und damit das Script MySQLDataExport keine Daten mehr eintragen konnte, denn eine Pollerkonfiguration für die Variable war ja immer noch vorhanden.
Da das ganze zu sehr ärgerlichen Effekten führen kann (keine Aufzeichnung mehr, Datenverlust einer bereits seit längerem aufgezeichneten Variable) werde ich mal nach einer Lösung suchen. Oder ist dieses Problem schon bekannt?
Löschen der Spalte in ‚data‘ wird aus varconfdel.php herausgenommen
Überprüfung und ggf. löschen übernimmt jetzt MySQLDataExport
Vorteil:
Damit können Spalten nicht mehr gelöscht werden solange ein Poller mit dieser Variable definiert ist.
Dennoch fehlende Spalten werden ignoriert: Damit läuft die Aufzeichnung weiter, gleichzeitig kann eine Fehlermeldung ausgegeben werden.
zu 1.
<<?
include ("./mysql.php");
$link=dbopen();
$IDS=split(",",$_REQUEST["fpkeys"]);
$ID = 0;
while ($ID < (count($IDS)-1)) {
$tempvar = "fdelete_".$IDS[$ID]; $delete=""; $delete=@$_REQUEST[$tempvar];
if ($delete == "on"){
//ThoKar: löschen der Spalte wird jetzt über MySQLDataExport vorgenommen
//$select = "SELECT * FROM dataconf where id='".$IDS[$ID]."'";
//$query = mysql_query($select);
//$row = mysql_fetch_array($query);
//$delete="ALTER TABLE data DROP COLUMN `".$row['ipsvar']."`";
//$tempvar = mysql_query($delete);
$delete="DELETE from dataconf where id='".$IDS[$ID]."'";
$tempvar = mysql_query($delete);
}
$ID=$ID+1;
}
mysql_close($link);
?>
zu 2.
<?
/*
*******************************
IP-SYMCON Event Scripting
*******************************
File : MySQLDataExport.ips.php
Trigger :
Interval :
*/
define("VarMySQLDataCounter", 25563 /*[Zentral\MySQL\MySQLDataExport\MySQLDataCounter]*/, true);
$MySQLHost = GetValueString(14998 /*[Zentral\MySQL\Host]*/);
$username = GetValueString(20048 /*[Zentral\MySQL\User]*/);
$password = GetValueString(55384 /*[Zentral\MySQL\Passwort]*/);
$link = mysql_connect($MySQLHost, $username, $password) or die("Keine Verbindung möglich!");
mysql_select_db("ipsdata") or die("Auswahl der Datenbank fehlgeschlagen");
$counter = GetValue(VarMySQLDataCounter);
If ($counter >= 4 ) {
$select = "SELECT * FROM dataconf";
SetValue(VarMySQLDataCounter, 0);
$polltime = 5;
} else {
$select = "SELECT * FROM dataconf where polltime='1'";
SetValue(VarMySQLDataCounter, $counter + 1);
$polltime = 1;
}
$vardat = mysql_query($select);
$insert = "INSERT INTO data SET date='".date("Ymd")."', time='".date("His")."', polltime='".$polltime."'";
//ThoKar: Alle Spalten von Variablen in data abrufen
$show="show columns from data WHERE Field <= '99999'";
$vartest = mysql_query($show);
while ($row = mysql_fetch_array($vartest)) {
$varArray[] = $row['Field'];
}
//ThoKar: Ende Spalten abrufen
while ($row = mysql_fetch_array($vardat)) {
$feldArray[] =$row['ipsvar'];
If (in_array($row['ipsvar'],$varArray)){ //ThoKar: Prüfen ob Spalte vorhanden
$insert = $insert.", `".$row['ipsvar']."`='".GetVarValue($row['ipsvar'], $row['vartype'])."'";
}
else{ //ThoKar: Fehlermeldung, alternativ könnte hier die Spalte auch angelegt werden
echo "Spalte: ".$row['ipsvar']." nicht vorhanden".chr(13);
}
}
$query = mysql_query($insert);
//ThoKar: Überflüssige Spalten ermitteln und eliminieren
foreach ($varArray as $var) {
If (in_array($var,$feldArray)==false){ //ThoKar: Spalte ist nicht in Definitionen vorhanden
echo $var." ist nicht vorhanden und wird gelöscht; ";
$delete="ALTER TABLE data DROP COLUMN `".$var."`";
$tempvar = mysql_query($delete);
}
}
//ThoKar: Ende Überflüssige Spalten
mysql_close($link);
function GetVarValue($var, $vartype){
if (IPS_VariableExists((int)$var)) {
$value = GetValue((int)$var);
if ($vartype == "Boolean") {
return ($value ? 1 : 0);
} else {
return $value;
}
}
IPS_LogMessage("MySQLDataExport","Die IPS Variable #'".$var."' existiert nicht mehr. Bitte aus der Poller Konfiguration entfernen ! Es wurde eine 0 in die Datenbank geschrieben");
return 0;
}
?>
das Problem das wenn eine Variable zweimal zum Loggen konfiguriert wird, nichts mehr geloggt wird, ist bekannt. Abhilfe bringt hier in der Tabelle dataconf das Feld ipsvar auf „unique“ zu setzen. Ich habe das glaube schon geschrieben bei den Trends mit amcharts. Zusätzlich habe ich noch das Script so geändert, das nur noch Variablen angezeigt werden die noch nicht in der DB stehen. Dies ist aber alles für die V1, V2 ist in der Mache, dauert aber noch wegen akutem Zeitmangel.
Hallo,
habe versucht MySQLData zu installieren und erhalte nach Start der install.php folgende Fehlermeldung:
Warning: mysql_connect() [function.mysql-connect]: Unknown MySQL server host ‚{192.168.0.10}‘ (11001) in D:\IP-Symcon\web\mySQLData2.0.2\install.php on line 8
Keine Verbindung möglich!
meine Frage ist, wo bzw. wie kann ich den MYSQL-Server installieren bzw. geht das ganze auf WINDOWS XP Home???
Für mysql entweder den offiziellen Installer nehmen (MySQL :: MySQL 5.1 Downloads ? Generally Available (GA) release for production use) oder xampp benutzen (apache friends - xampp für windows).
Ich bevorzuge xampp, da sich da alles bequem veschieben/sichern lässt und ein apache mit phpmyadmin zur Konfiguration der Datenbanken gleich dabei ist. Das wird zwar der eine oder andere für Overkill halten, aber den apache kann man ja auch wieder bequem deaktivieren.
Und ja, läuft unter XP Home.
Jop, da läuft PHP auf dem Apache. Und sogar nach dem selben Prinzip wie bei IP-Symcon: dll-Einbindung. Und da beide ihre eigene dll haben stören die sich auch nicht. Man sollte nur drauf achten, dass nicht in IP-Symcon ein Webserver den selben Port (standardmäßig 80) hat wie der Apache beim xampp. WebFront wird aus diesem Grund ja auch standardmäßig auf Port 82 gestartet ;).
Beim Umziehen von xampp reicht das Ausführen der setup_xampp.bat und schon läuft alles wieder. Server können alle einzeln per xampp-control.exe per GUI gestartet/gestoppt werden und dort auch gleich die passenden Dienste installiert/deinstalliert werden. Meine xampp-Installation ist hier schon diverse Jahre alt. Dann und wann aktualisiere ich aber auch mal. Bisher alles problemlos.
Jo,
aber mit welcher Version arbeitet dann die MYSQL? Datenbank, welche wir ja einbinden.
In der Installationsanleitung von Bruns8234 werden gezielt die richtigen dll´s mit eingebunden.
Oder hat die Datenbank keine eigenen PHP Routinen?, ich bin diesbezüglich eher Softwaredummi mit ´ner riesigen Bildungslücke und frag vorsichtshalber Profi´s, bevor ich tagelang nach selbst produzierten Bug´s suche.
Der Informatik-Betriebswirt in mir sagt zwar: „PHP ist eine Webserver Erweiterung“, aber der Techniker rät zur Vorsicht: „denk an Murphy´s Law´s“
Den Apache hab ich bewußt nicht mit eingebunden weil mir der aus der IPS Umgebung vollkommen ausreicht.
mfg
BerndJ
PS: ich hatte die gleichen Probleme beim Einrichten, da dieser Punkt der Einrichtung in der Anleitung ruhig etwas für Leute wie mich, sprich PCDummies erweitert werden könnte
mySQL ist eine Datenbank, welche mittels Client-Bibliotheken angesprochen wird. Genauso koennten wir also mit SAPDB, MSSQL oder einer anderen wie SQLite arbeiten. PHP hat nichts an dieser Stelle (innerhalb der Datenbank) mit dieser zu tun.
ABER: Die entsprechende PHP-Version muss die entsprechende Clientbibliothek fuer die gewuenschte Datenbank enthalten. Sonst gibt es naemlich in PHP nicht die benoetigten Datenbank Befehle.
Nach langer (dienstlich bedingter) Abwesenheit kann ich nun endlich die aktuelle Version von MySQL-Data freigeben:
Version V2.0.3 steht ab sofort zum Download bereit. [SIZE=2]Der Downloadlink im ersten Posting ist entsprechend angepasst. [/SIZE]
(Link zum Download-Posting: http://www.ip-symcon.de/forum/50515-post1.html)
Grundsätzlich hat sich nicht viel verändert, jedoch möchte ich allen empfehlen auf die neue Version umzusteigen, da die Dateien in Vorbereitung zum nächsten Major-Release angepasst und mit Versionsheadern versehen wurden. Unter anderem wird der nächste Major-Release dann eine Update-Routine enthalten, die alle geänderten Dateien alleine aktualisiert.
Für den Umstieg von V2.0.1 auf V2.0.3 sollten also alle Skriptdateien ausgetauscht werden (das bzw. die IPS-Skripte nicht vergessen)! Nach dem Austausch die notwendigen Anpassungen in mysql.php, MySQLDataExport.ips.php und MySQLDataCleanup.ips.php nicht vergessen!
Was hat sich geändert:
Die Pollerkonfiguration bietet nur noch Variablen an, die bisher nicht konfiguriert sind.
Das Aufräumskript (MySQLDataCleanup) ist jetzt teil des Pakets und die Installation entsprechen in der Installationsanleitung beschrieben.
Im Paket ist jetzt eine ChangeLog.txt vorhanden, die alle Änderungen dokumentiert. Ich werde zukünftig nur noch Versionsnummer, Datum und Link im ersten Posting anpassen.