MiSo: Maximale Arraygröße?

Ich habe mich gefragt... wie groß kann eigentlich ein Array bei PHP so werden? Logischerweise gibt es nicht wirklich Größeneinschränkungen wie man das von Variablen o.ä. her kennt. Wenn ich aber, sagen wir mal, eine Tabelle mit 10 Textspalten à la longtext und 5000 Einträgen in ein Array einlese, kanns schon mal schief gehen, den Server in die Knie zwingen o.ä.?

mfg
Micha

  1. Moin!

    Ich habe mich gefragt... wie groß kann eigentlich ein Array bei PHP so werden? Logischerweise gibt es nicht wirklich Größeneinschränkungen wie man das von Variablen o.ä. her kennt. Wenn ich aber, sagen wir mal, eine Tabelle mit 10 Textspalten à la longtext und 5000 Einträgen in ein Array einlese, kanns schon mal schief gehen, den Server in die Knie zwingen o.ä.?

    PHP hat Maximalwerte für den belegbaren Speicherplatz. Typische Werte wären 2 oder 8 MB. Dementsprechend hast du bei dem Versuch, größee Datenmengen in Variablen zu speichern, mit Sicherheit ein Problem.

    Die Werte lassen sich natürlich konfigurieren, wenn du entsprechende Zugriffsrechte hast, und es notwendig erscheint.

    Datenbankabfragen, die mit mysql_query() gemacht werden, werden übrigens sofort komplett in einen PHP-Puffer geladen, damit die Datenbank wieder freigegeben werden kann. Solltest du aber Querys machen, die für den PHP-Speicher zu groß sind, ist irgendeine Aufteilung in Stücke notwendig. Beispielsweise mit mysql_unbuffered_query(). Das hat gewisse Nachteile, nutzt aber immer nur den Speicherplatz für einen Datensatz, nicht für die Gesamtmenge.

    - Sven Rautenberg

    --
    "Love your nation - respect the others."
    1. Hmm. Das führt uns wiederum zu einigen Problemen wie z.B. "was mach ich wenn ich ne bestimmte Aufgabe (z.B. Gruppierung von Elementen) nicht in der MySQL-Abfrage machen kann und ein Array zu Hilfe nehmen muss?

      mfg
      Micha

  2. Moin!

    Ich habe mich gefragt... wie groß kann eigentlich ein Array bei PHP so werden?

    Das dürfte im wesentlichen von der Speicherbeschränkung, konfiguriert in der PHP.ini abhängen.
    Sehr große Arrays sind aber besser in einer Datenbank aufgehoben, die kann solche auch besser und schneller verarbeiten.

    MFFG (Mit freundlich- friedfertigem Grinsen)

    fastix®

    --
    Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Seminare, Training, Development
  3. echo $begrüßung;

    Ich habe mich gefragt... wie groß kann eigentlich ein Array bei PHP so werden? Logischerweise gibt es nicht wirklich Größeneinschränkungen wie man das von Variablen o.ä. her kennt.

    Woher kennt _man_ denn solche Beschränkungen? Aus dem Kapitel zu Types - Strings ist - im Gegenteil - lediglich zu entnehmen, dass es praktisch keine Obergrenze für einzelne Strings gibt: "It is no problem for a string to become very large. There is no practical bound to the size of strings imposed by PHP, so there is no reason at all to worry about long strings."

    Wenn ich aber, sagen wir mal, eine Tabelle mit 10 Textspalten à la longtext und 5000 Einträgen in ein Array einlese, kanns schon mal schief gehen, den Server in die Knie zwingen o.ä.?

    Die Begrenzung, der PHP untersteht, ist zum einen der vorhandene Systemspeicher und zum anderen die konfigurierte Beschränkung in Form des Parameters memory_limit. Allerdings gibt es keine Berechnungsgrundlage, wieviel Speicher ein Script benötigt. Auch sind mir keine weiteren Aussagen zum Speicherverbrauch einzelner Konstrukte im Handbuch bekannt.

    Im Kapitel PHP Options&Information finden sich die beiden Funktionen memory_get_peak_usage() und memory_get_usage(), die dir bei der Ermittlung des Seicherverbrauchs deines Scripts behilflich sein können.

    echo "$verabschiedung $name";