Hallo,
ich möchte vorwegschicken, dass ich nicht wirklich große Ahnung von Speicherverwaltung innerhalb PHP oder dessen Arbeitsweise habe.
Daher folgende Frage:
ich habe einen Satz von Arrays in denen ich Informationen über eine Datenbank speichere.
Das sieht ungefähr folgendermaßen aus: (Ein beliebiger Auszug)
$names_ar = array(
'tabelle1' => array(
'feld1' => 'Name',
'feld2' => 'Straße'
)
);
$opt_ar = array(
'tabelle1' => array(
'feld2' => array(
1 => 'Teststraße',
2 => 'Andere Straße'
)
)
);
Sinn und Zweck dieser Arrays ist eine Art Datenbank-Backend dynamisch erstellen zu können. Es sollen Einträge aus einer MySQL-Datenbank bearbeitet werden können ohne dass die eigentlichen Feldnamen, die von zum Beispiel der Webseite ausgelesen werden, berührt werden. Das Drumherum existiert bereits und funktioniert für meine Zwecke prächtig.
Am Anfang habe ich die Informationen, die die Datenbank betreffen in einem eigenen Dokument wie oben definiert (Wenn nichts definiert ist erscheint einfach der eigentliche Feldname bzw. ein einfaches Textfeld statt eines Optionsfeldes (bei opt_ar).
Mit einem write_new("tabellenname") kann ich durch die funktionsloste zum beispiel eine liste mit den entsprechenden felder erstellen, die mir den datensatz dann auch für computer-averse menschen erstellbar macht.
Nun versuche ich zwei Verbesserungen zu erzielen:
- Zum einen gehört die Funktionssammlung aufgeräumt, ich erledige viele Arbeiten des "Auto-Auslesens" per Copy+Paste-Code (Ein Enum-Feld wird automatisch in ein opt_ar Feld umgewandelt, ein date Feld in eine Datumsmaske etc). Das möcte ich in eigene Funktionen auslagern. Das ist bisher daran gescheitert, dass ich mich vor der global-Variante ein wenig scheue, zum anderen auch nicht alle Felder einzeln übergeben und "retrunen" will.
Ich sehe nun zwei Lösungsvarianten. Die eine wäre alle "Hauptarrays" in einer Variable unterzubringen wie zum Beispiel durch $sys['opt_ar'] und $sys['names_ar'], das würde allerdings die ganze Sache ziemlich in die länge ziehen. Teilweise hätte ich dann Arrays mit bis zu 6 Schlüsseln. Würde das die Speicherverwaltung nicht etwas arg strapazieren oder ist es egal?
Die andere Lösung wäre Zeiger mit globale Variablen zu setzen. Zum Beispiel mit $GLOBALS['opt_ar'] =& $opt_ar, wobei das auf den Speicher den selben Effekt haben sollte, oder?
Da ich ich auch plane irgendwann ein Adminpanel einzuführen, so dass solche Feldeinträge dann dynamisch erzeugt werden können, überlege ich auch ein wenig wie man denn steuern könnte, um möglichst Speicherschonend zu arbeiten. Die Arrays besser in eine Datenbank fassen und bei jeder Abfrage die entsprechenden neuauslesen? Sie in eine Session Variable schreiben und nur auslesen wenn sie nicht schon drin ist?
Danke für die Beantwortung, auch wenn die Frage vielleicht ein wenig naiv erscheinen mag, aber einer muss es mir ja mal sagen ;)
(Sorry falls Doppelpost, erscheint einfach nicht im Forum.)