Hallo Zusammen,
ich kämpfe leider permanent mit meinem Variabelen Limit von 1000.
Eine Unlimited Lizenz ist leider im Moment nicht drin. Kann ich irgendwo sehen
wie die Variabelen genutzt werden? Also ob es z.b eine HM Komponente ist oder
eine Variabele eines IPSLibary Modules?
Genau Flobo du hast er erfasst. Habe 1000 Variabelen belegt.
Kommt mir so unglaublich viel vor. Brauche also eine Übersicht wie die 1000 Variabelen
sich aufteilen.
Wüsste jetzt keine spezielle Methode das rauszufinden … ausser an der uhrzeit die neben den variablen stehen. Wenn die nie geändert wurden kann mann davon ausgehen das nie ein zugriff stattgefunden hat. Kommt immer darauf an was du verbaut hast …
Es ist aber zu beachten das es auch ungenutze Systemvariablen geben kann, welche nach dem Löschen wieder angelegt werden und garnicht erst gelöscht werden sollten!
Man könnte die Sache natürlich auch per Script lösen.
bin gerade zufällig über Dein 1000-Variablen-Problem gestolpert. Da gibt es eine alternative Programmiermethode, und zwar, in dem man mehrere Werte hintereinander in einen String schreibt. Für einfache, binäre Schaltzustände reicht es und man kann das ganze auch auch mit beliebig vielen Stellen ausschmücken. PHP ist, was die Verarbeitung von Strings angeht, nicht so zickig.
Ich habe irgendwann mal darüber philosophiert und mir folgende Lösung dazu ausgedacht:
<?
//SCHREIBEN
$laenge = 80; //Gesamtlänge des Strings
$wert = „z“; // zu schreibender Wert
$feld = 8; // Position des zu schreibenden Wertes
$quelle = 20378 // 80-stellige String-Variable mit den div. Status
$diff = $laenge - $feld;
$var = GetValue ($quelle);
$wert2 = substr($var, 0, $laenge - $diff - 1);
$wert3 = substr($var, $laenge - $diff, $laenge);
echo $wert2, $wert, $wert3; // Ergebnis, muss mit SetValue wieder zurückgeschrieben werden
[…]
Das Ganze funktioniert so natürlich nicht unbedingt, das Skript muss entsprechend angepasst und ggf. eine Subroutine für die Verarbeitung der Werte gebastelt werden. Sonst hast Du immer den einen oder anderen Programmblock in Deinen Skripten.
Also ohne unliminited würde ich mich nicht an IPSLibary rantrauen…
Hatte sie kurzzeitig mal ausprobiert und da merkt man schon, wie einem die Variablen wegschmilzen.
Womit man gut Variablen sparen kann, sind die Status, ergo die „:0“ der HM Komponenten. Wenn die nicht zu schalten sind, bekommt man eh einen Fehler - und wer prüft vorher schon auf reachable oder so…
Um Ottersberger’s Idee aufzugreifen, hier eine universelle Loesung um beliebig viele PHP Variablen in eine einzige IPS Variable dauerhaft zu speichern. Ich habe sie schnell mal heruntergetippt, sie kann natuerlich beliebig ausgeschmueckt werden. Die Idee is, ein Objekt zu definieren, diesem dann beliebig Attribute zuzuweisen und das Objekt in die IPS Variable wegzuschhreiben.
Als erstes muss man eine IPS-String Variable definieren und deren ID merken bzw. der Variablen $extraVarsId zuweisen. Der rest geht automatisch.
Hier der Code, ich denke, er ist selbsterklarend:
$extraVarsId = 44630; // hier eigene ID einfuegen
// schreibt ein beliebiges PHP Objekt in eine IPS String Variable
function writeVariables($extraVarsId, $varObject)
{
setValue($extraVarsId, serialize($varObject));
}
// liest ein beliebiges PHP Objekt aus einer IPS String Variablen
function readVariables($extraVarsId)
{
$value = getValue($extraVarsId);
if ($value == '') return new stdClass();
else return unserialize($value);
}
// als erstes immer ein read machen, damit das Objekt initialisiert wird.
$myVariables = readVariables($extraVarsId);
// ein paar Testdaten belegen
$myVariables->myNewVariableString = 'es geht!';
$myVariables->myNewVariableBool = true;
$myVariables->myNewVariableInteger = 1234;
// Variablenobjekt in IPS Variable wegschreiben
writeVariables($extraVarsId, $myVariables);
// ... und neu laden
$myRecoveredVariables = readVariables($extraVarsId);
echo $myRecoveredVariables->myNewVariableString . "
";
echo $myRecoveredVariables->myNewVariableBool . "
";
echo $myRecoveredVariables->myNewVariableInteger . "
";