Ich verwende - gerade beim Aufräumen - sehr gerne die Funktion ‚nach Referenzen suchen‘. Getreu dem Motto: was nicht benutzt wird, kann weg…
Mir fehlen da noch zwei Punkte:
Leider wird ‚nach Referenzen suchen‘ für Kategorien noch nicht unterstützt. Dabei würde ich manchmal gerne wissen, ob eine Kategorie in einem meiner Webfronts genutzt wird. Momentan sehe ich keine andere Möglichkeit das herauszufinden, als alle Webfront Konfiguratoren manuell zu durchsuchen. Seeehr aufwändig …
die Funktion berücksichtigt zur Zeit noch nicht, ob eine Variable in Instanzen verwendet wird. Beispiel: die in der Alexa Instanz referenzierten Variablen werden nicht gefunden. Da ist es natürlich schlecht, wenn man sich auf die Funktion verlässt.
Ich würde mich freuen, wenn die Anregungen Gefallen finden.
Macht voll sinn. Wir haben Kategorien extra aus der Funktion „raus“ genommen, weil uns der Use-Case gefehlt hat. Fügen wir hinzu und das WebFront liefert dann auch korrekt die Referenzen.
Jein. Es betrifft zur Zeit alle PHP-Module. Die nativen Instanzen sollten diese Information bereits korrekt liefern. Ich denke wir werden diese Callback Funktion auch erst einführen, sobald OPCache offiziell als Stable gilt - Denn für jede PHP Instanz muss diese Funktion ausgeführt werden und dies würde bisher sehr viel Zeit/Resourcen kosten.
[ol]
[li]Super - freue mich schon drauf[/li][li]Das gilt aber zur Zeit noch nicht für die Alexa Kerninstanz. Gerade dafür braucht man es aber.[/li][/ol]
Ich programmiere gerade ein Modul und da wäre die Funktion „Referenzen suchen“ als IPS_* Funktion hilfreich.
Kann ich per PHP Code nach Referenzen suchen oder muss ich mir die komplette Struktur mit „IPS_GetSnapshot“ holen und darin parsen?
Gefunden habe ich in der „functions.ips.php“ lediglich das Kommando „UC_FindReferences“. Das scheint aber nicht für diesen Zweck bestimmt zu sein, bzw. ist es offiziell nirgends dokumentiert.
UC_FindReferences ist die richtige Funktion. Dokumentieren werden wir die nicht, da diese eher für den internen Gebrauch ist. Schau dir aber mit STRG+Leertaste mal die notwendigen Parameter an. Sollte eher einfach sein
Daher meine Frage: warum wird die Referenz zwar angezeigt aber beim Löschen dann doch nicht berücksichtigt?
An der Stelle ist der Dialog „schlau“. Er filtert alle Referenzen, die ebenfalls gelöscht werden.
Was der Dialog noch nicht tut, ist jedoch alle Unterobjekte ebenfalls auf Referenzen zu prüfen. Dies werden wir jedoch zeitnah nachpflegen.
Oder anders gefragt: sollte die Referenz vielleicht gar nicht erst angezeigt werden, da es sich ja um eine ‚interne‘ Referenz der Instanz handelt.
Ich habe mir das durch den Kopf gehen lassen und bin deiner Meinung. Wir werden die Standardaktionen nicht bei den Referenzen berücksichtigen.
Super. Macht es nicht auch Sinn, bei der Aktion „Nach Referenzen suchen“ eine Option anzubieten, Unterobjekte einzuschließen? Oft will man z.B. wissen, wo eine Instanz und ihre Statusvariablen alle benutzt werden. Zur Zeit muss man jedes Objekt einzeln untersuchen lassen. Wenn ich da an ‚WundergroundWeather‘ denke mit geschätzten 50 Variablen …
Das finde ich gut. Also wird auch UC_FindReferences sie nicht berücksichtigen?
Ist der Punkt mit dem Finden von Referenzen innerhalb der Instanzen von PHP-Modulen eigentlich noch offen oder ist das mittlerweile verfügbar, muss aber vom Entwickler eines Moduls extra implementiert werden?
Ich hatte jetzt den Fall, wo ich eine Instanz inkl. ihrer Statusvariablen löschen musste. Ich habe zuvor nach Referenzen auf die Statusvariable gesucht und die Funde entsprechend angepasst. Nach dem Löschen traten dann trotzdem diverse Fehler auf, weil die Statusvariable noch in den Instanzen verschiedener Module genutzt wurde. Die Module wurden mir aber zuvor bei der Suche nach Referenzen nicht angezeigt.
Das wird inzwischen berücksichtigt. Aber, wenn fremde IDs in einem Modul benutzt werden, muss das der Entwickler aktiv mit RegisterReference Symcon mitteilen.
Sonst findet die Suche nach Referenzen nichts.
Michael