DUGtool und IPS 2.2, sqlite_fetch_array

Hallo,

seit dem Update von 2.1 auf 2.2 und einspielen vom Update „Update1.6 auf 1.61.zip“ habe ich im DUGtool-Script Graphenupdate in Zeile 24 folgenden Fehler:

[.WICHTIG\DUG\Graphenupdate SQLite DUG Tool] =
Warning: sqlite_fetch_array(): 24 is not a valid sqlite result resource in [.WICHTIG\DUG\Graphenupdate SQLite DUG Tool] on line 24

Bis dann Ulli

Hallo,
lade die dazu den BUGFix http://www.ip-symcon.de/forum/f52/dugtool-ip-symcon-2-2beta-9067/#post74677 herunter

tgusi74

Habe ich durchgeführt, jedoch bleibt der Fehler.

010 08:19:00.834 | 22506 | MESSAGE | ExecuteThreadID #6 | [.WICHTIG\DUG\Graphenupdate SQLite DUG Tool] =
Warning: sqlite_fetch_array(): 24 is not a valid sqlite result resource in [.WICHTIG\DUG\Graphenupdate SQLite DUG Tool] on line 24

Bis dann Ulli

Ich schließe mich dem vorredner an.
Habe das selbe problem.

gruß
mike

eigentlich glaube ich das beim einspielen des BUGFix etwas schief gelaufen ist,
bitte kontrolliert bei der „Graphenupdate.php“ ob hier wirklich, das sqlite_close erst nach dem sqlite_fetch_array vorkommt, den in PHP5.3.1 ist bei geschlossener DB kein auswerten der Daten mehr möglich

$dblink = dbopen();
$select = "SELECT * FROM Graph WHERE ErstellungsIntervall != '0';";
$graphresult = sqlite_query($dblink, $select);

while($graphentry = sqlite_fetch_array($graphresult))
{
//...
}

sqlite_close($dblink);

… den in der orginal Datei wird vor der „WHILE“ die Verbindung schon geschlossen (sqlite_close($dblink):wink: !!

tgusi74

Sieht bei mir genau so aus.
Jedoch der Fehler bleibt.

Bis dann Ulli

Hallo,
irgendwie verstehe ich das ganze nicht ganz !! ==> wirklich die richtige EXT „php_sqlite.dll“ der Version 5.3.1 geladen

Versuch doch mal den Script zu starten

<?
//Name der Datenbankdatei ==> aus SQLLITEBASIS.PHP
$dbpfad="C:\programme\IPSymcon\DB\DUGTool.db";

echo "DB VERBINDEN ... 
";
$dblink = dbopen();

echo "Starte ABFRAGE (SELECT) ... 
";
$select = "SELECT * FROM Graph WHERE ErstellungsIntervall != '0';";
$graphresult = sqlite_query($dblink, $select);

echo "Starte AUSWERTUNG ... 

";
while($graphentry = sqlite_fetch_array($graphresult))
{
  echo ($graphentry['ID'] . " - " . $graphentry['Name']. "
");
}

echo "
SCHLIESSE DB ... 
";
sqlite_close($dblink);
echo "FERTIG
";


function dbopen()
   {
    global $dbpfad;
    if ($dblink = sqlite_open($dbpfad, 0666, $sqliteerror))
       {
        echo "DB VERBINDUNG OKAY !!
";
        return $dblink;
       }
    else
       {
        echo "DATENBANKFEHLER AUFGETRETEN " . $sqliteerror . "
";
        die ($sqliteerror);
       }
   }
?>

… sollte folgende Ausgabe ergeben

DB VERBINDEN ... 
DB VERBINDUNG OKAY !!
Starte ABFRAGE (SELECT) ... 
Starte AUSWERTUNG ... 

1 - TEMPERTURVERLAUF
2 - AUSSENTEMP

SCHLIESSE DB ... 
FERTIG

tgusi74

Bei mir kommt folgende Code

"
DB VERBINDEN …
DATENBANKFEHLER AUFGETRETEN

"
habe das gleiche problem

mfg mike

entschuldigung

habe den pfad geändert dann kam folgendes

"
DB VERBINDEN …
DB VERBINDUNG OKAY !!
Starte ABFRAGE (SELECT) …
Starte AUSWERTUNG …

1 - 24 Stunden
3 - 24 Stunden
4 - 7 Tage
5 - 7 Tage

SCHLIESSE DB …
FERTIG
"

mfg mike

suche weiter

Mit diesem Testscript funktioniert auch bei mir die Ausgabe wie bei mike_h.
Auch ich suche weiter.

Bis dann Ulli

Hallo,
jetzt glaube ich das Problem erkannt zu haben …

Ihr hab die Dateien „Graphenupdate.php“ und „DBupdate.php“ in SCRIPTS - Verzeichnis nicht ersetzt (sondern nur im Webfront/DUGTool)

Sorry,
wurde von mir schlecht dokumentiert :rolleyes:

(das Problem ist ja, dass ein jeder schon DUGTool installiert hat und somit die Installationroutine nicht mehr läuft welche die Dateien normalerweise in den SCRIPTS-Folder verschieben)

tgusi74

Danke

Genau diws war der Fehler

Da ich den script versucht hatte zuändern habe ich mir das Orginal nochmals
über die anderen Scripts kopiert.

Danach kam die oben genannte Fehler meldung nicht mehr.

Und es wurde ein neuer Script erstellt.

Also kurz gesagt

ES GEHT WIEDER

Nochmals Fanke für den Hinweis

mfg mike
PS: Ich habe den Script nochmals angehangen.
PS: Wie kann ich die Meldungen edetieren?


<?
//==================================================================================
// Datei.......: Graphupdate.php
// Beschreibung:  überprüft welche Graph gerade erstellt werden muss
//			wird regelmäßig im Abstand von 60 sek aufgerufen
//
// DUG Version.....: V1.6
// SVN Revisionsnr:	$Revision: 40 $
// zuletzt geändert : 	$Date: 2009-05-29 15:53:44 +0200 (Fr, 29 Mai 2009) $
// Author:			$Author: tobias $
//==================================================================================
//graphenbasis entält schon das include für sqlitebasis.php
include ("DUGToolbasis.php");
include ($DUGTOOLPFAD."graphenbasis.php");


$DEBUG = false;

$dblink = dbopen();
//suche alle graphen raus, die ein Erstellungsintervall größer Null haben
// Null bedeutet der Graph soll nicht automatisch erzeugt  werden
$select = "SELECT * FROM Graph WHERE ErstellungsIntervall != '0';";
$graphresult = sqlite_query($dblink, $select);
$i=0;
while($graphentry = sqlite_fetch_array($graphresult))
{
	if (isset($graphentry['ID']))
	{
		if ($DEBUG) {echo "check Graph: ".$graphentry['ID']."--> ".((time()+(int)$graphentry['ErstellungsOffset']) % $graphentry['ErstellungsIntervall'])."<br>";}
		if (((time()+(int)$graphentry['ErstellungsOffset']) % $graphentry['ErstellungsIntervall']) < 60)
		{
			if ($DEBUG) {echo "erstelle Graph: ".$graphentry['ID']."<br>";}
			$erstellungsliste[$i] = $graphentry['ID'];

			$i = $i+1;
		}
	}
}

sqlite_close($dblink);

//das Erstellen der Graphen ist deswegen vom  Überprüfen abgekoppelt, da das ERstellen mehrerer Graphen auch mal über 60 sek
//dauern kann. Die Graphen, die dann nach dieser Zeit überprüft werden, werden dann nicht mehr als ausführbereit erkannt,
//obwohl sie er wären
//die Sleep Anweisung wurde eingefügt, um IPS nicht zu lange lahm zu legen
//ob ein Graph nun eine Sekunde früher oder später erstellt wird ist wohl egal. :)
if (isset($erstellungsliste)){
	foreach($erstellungsliste as $graphID)
	{
		Graphenerstellen($graphID);
		IPS_LogMessage("DUG Tool Graphen Update", "Der Graph ".$graphID." wurde gerade neu erstellt.");
		sleep(1);
	}
}



?>

Danke

Es funktioniert wieder.

Bis dann Ulli