Speicherverwaltung und Performance-Tipps
Geben Sie Speicher frühzeitig frei, vermeiden Sie große Array-Kopien und verwenden Sie Generatoren für große Datenmengen.
Speicherverwaltung und Performance-Tipps ist eine kostenlose PHP Academy-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des PHP Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der PHP Academy-Kurs umfasst insgesamt 4 Lektionen.
Speicherverwaltung in PHP
PHP verwendet für die Speicherbereinigung Referenzzählung mit einem Zyklensammler. Jede Anfrage beginnt mit einem neuen Heap – langlebige Prozesse (Worker, Horizon) können Speicherlecks anhäufen.
memory_limit
Legen Sie in php.ini ein geeignetes Speicherlimit fest. Bei einer Überschreitung wird ein schwerwiegender Fehler ausgelöst.
# php.ini:
memory_limit = 256M
// Check at runtime:
echo memory_get_usage(true) / 1024 / 1024 . " MB";
echo memory_get_peak_usage(true) / 1024 / 1024 . " MB peak";Große Variablen aufheben
Geben Sie Speicher explizit frei, wenn große Arrays oder Objekte innerhalb einer langen Funktion nicht mehr benötigt werden.
<?php
$data = loadLargeDataset();
processData($data);
unset($data); // free immediately, do not wait for end of scope
gc_collect_cycles(); // force garbage collection if circular referencesGeneratoren für große Datenmengen
Verwenden Sie Generatoren, um große Dateien oder Abfrageergebnisse zeilenweise zu verarbeiten, ohne alles in den Speicher zu laden.
<?php
function readCsvLines(string $file): Generator {
$fh = fopen($file, "r");
while (($line = fgetcsv($fh)) !== false) {
yield $line;
}
fclose($fh);
}
foreach (readCsvLines("large.csv") as $row) {
importRow($row);
}Das Kopieren großer Arrays vermeiden
PHP verwendet für Arrays Copy-on-Write. Durch die Zuweisung eines Arrays an eine Variable wird es erst kopiert, wenn einer der beiden Werte geändert wird. Übergeben Sie große Arrays per Referenz, wenn eine Veränderung erforderlich ist.
<?php
function processArray(array &$data): void {
// & avoids a copy when the parameter is modified
}String-Verkettung in Schleifen
Das Erstellen eines Strings durch Verkettung innerhalb einer Schleife ist bei sehr großen Strings ineffizient. Verwenden Sie stattdessen ein Array und implode().
<?php
// Slow for large N:
$str = "";
foreach ($items as $item) $str .= $item->format()."\n";
// Faster:
$parts = [];
foreach ($items as $item) $parts[] = $item->format();
$str = implode("\n", $parts);Objekterstellung cachen
Das Instanziieren von Objekten, insbesondere mit Konstruktorlogik, in engen Schleifen ist teuer. Cachen Sie Instanzen oder verwenden Sie nach Möglichkeit Flyweight-Objekte.
Wiederholte Funktionsaufrufe vermeiden
Verschieben Sie Funktionsaufrufe aus Schleifen heraus, wenn sich ihr Ergebnis pro Iteration nicht ändert.
<?php
// Slow:
for ($i = 0; $i < count($items); $i++) { ... }
// Fast (count() called once):
$n = count($items);
for ($i = 0; $i < $n; $i++) { ... }PHP-FPM-Worker optimieren
Konfigurieren Sie die Anzahl der PHP-FPM-Worker anhand des verfügbaren Arbeitsspeichers und der erwarteten Nebenläufigkeit. Eine grobe Faustregel lautet: workers = RAM / (durchschnittlicher Speicherverbrauch eines Workers).
OPcache und Preloading
Aktivieren Sie OPcache, das in der vorherigen Lektion behandelt wurde, und laden Sie häufig verwendete Framework-Klassen vorab. Dadurch entfällt der Parse- und Kompilierungsaufwand pro Request.
Zuerst profilieren
Profilen Sie immer, bevor Sie optimieren. Mikrooptimierungen an Code, der kein Engpass ist, verschwenden Zeit und verschlechtern die Lesbarkeit. Verwenden Sie Xdebug oder Blackfire, um den tatsächlichen Hotpath zu finden.
Zusammenfassung
Verwenden Sie Generatoren für große Datenmengen. Heben Sie Variablen nach ihrer Verwendung mit unset auf. Vermeiden Sie Kopien großer Arrays. Verschieben Sie konstante Aufrufe aus Schleifen heraus. Profilen Sie mit Xdebug, um vor der Optimierung die tatsächlichen Engpässe zu finden.
Kurzer Check
Was ist der wichtigste Vorteil von PHP-Generatoren bei großen Datenmengen?
Häufig gestellte Fragen
Ist die Lektion „Speicherverwaltung und Performance-Tipps“ kostenlos?
Ja — der vollständige Text von „Speicherverwaltung und Performance-Tipps“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des PHP Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der PHP Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Speicherverwaltung und Performance-Tipps“?
Geben Sie Speicher frühzeitig frei, vermeiden Sie große Array-Kopien und verwenden Sie Generatoren für große Datenmengen. Du übst PHP Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um PHP Academy zu starten?
Keine Vorkenntnisse erforderlich. PHP Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.
Wie lange dauert die Lektion „Speicherverwaltung und Performance-Tipps“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser PHP Academy-Lektion Code schreiben und ausführen?
Ja. Jede PHP Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- PHP mit Xdebug profilieren
- OPcache: Bytecode-Caching
- Datenbankabfragen optimieren
- Speicherverwaltung und Performance-Tipps