kostenloser Webspace werbefrei: lima-city


maximale String-Länge (in Variable)

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    tauban

    tauban hat kostenlosen Webspace.

    Hallo,

    ich bastel gerade an einem Script rum,
    bei dem grosse Strings verarbeitet werden

    manchmal bekomme ich eine Fehler-Meldung:"script-Laufzeit reicht nicht aus"
    oder auch "nicht genug (RAM) Speicher verfügbar" .... oder so

    wieviele Zeichen darf / sollte ein String maximal haben?

    ist es besser den String in eine Variable zu packen oder jede Zeile als Element in Array?


  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. w*o

    Du kannst natürlich nicht unendlich viel mit PHP verbrauchen, hier bei lima ist das auch etwas eingeschränkt. Aber eigentlich, wenn dein Script richtig geschrieben ist, also mit Speicherfreigabe und sowas, dann dürfte es da keine Probleme geben. Natürlich kann man es auch da übertreiben...

    Wie groß ist denn der String, den du verarbeiten willst? (in Byte)

    EDIT:
    Ich glaube ich hab es noch nie mit einem eigenen Script geschafft, die RAM-Grenze zu sprengen (das zählt nicht für Lima-City!!) ;-)

    Beitrag zuletzt geändert: 7.7.2010 9:58:13 von who
  4. PHP hat keine eigener Beschränkung für Strings, zumindest weiß ich nichts davon. Da PHP aber alle Variablen in den Arbeitsspeicher läd (was ja aus Performancegründen verständlich ist), greift hier die memory_limit Einschränkung.

    http://php.net/manual/de/ini.core.php
    Da unter der Kategorie "Ressourcen" gibts mehr Infos. Da siehste dann auch an Hand von PHP_INI_ALL, dass du das memory_limit mit ini_set() hochstellen kannst ;)

    Bevor du das memory_limimt hochschraubst solltest du vielleicht in deinem Script nochmal sehen, ob du da nicht optimieren kannst. Also Kopien von Strings vermeiden, mehr mit String Offsets arbeiten ;)

    Beitrag zuletzt geändert: 7.7.2010 10:19:21 von nikic
  5. Autor dieses Themas

    tauban

    tauban hat kostenlosen Webspace.

    danke,

    Problem ist dabei, das die Fehler schon beim ersten einlesen auftreten.

    der String kommt aus .txt Datei (zwischen 50KB und 5MB Größe)
    und bei größeren Dateien reicht entweder die Laufzeit oder der Speicher nicht aus,
    um überhaupt an den kompletten String ran zu kommen .

    Idee wäre,
    die zu große .txt Datei in mehrere handlebare Dateien aufzuteilen (je max 100KB oder so)
    doch will ich die Dateien NICHT per Hand bearbeiten, das müsste auch das Script machen
    oder das Lesen in der großen .txt von Dateizeiber bis Dateizeiger (Position in der .txt)

    Ziel ist es aus dem String nach einem Wort zu suchen, bei Fund: die ganze Zeile in Ausgabe-Array
    dadurch brauche ich ja neben dem Speicher für das Einlesen und die Suche noch für Ausgabe-String

    Aber wenn ich die Dateien zer-stückel (oder Schrittweise auslese),
    dann kann ich ja wieder nicht mit einem Aufruf den kompletten String "durchsuchen"
    sondern immer nur einen Teil davon ... ?! ..

  6. Versuch es mal so:
    $seach = 'foobar';
    $output = array();
    $handle = fopen('filename', 'r');
    while (!feof($handle)) {
        if (false !== strpos($buffer = fgets($handle), $search)) {
            $output[] = $buffer;
        }
    }

    Nicht getestet, wie immer.
    Das ganze liest die Datei immer nur teilweise aus, bis zum nächsten Newline ;)

    Beitrag zuletzt geändert: 8.7.2010 11:27:50 von nikic
  7. Autor dieses Themas

    tauban

    tauban hat kostenlosen Webspace.

    nö.
    getestet mit einem string und einem Suchwort (das 3x im Text vorkommt)
    Ergebnis:
    $output[] = leeres Array
    also nix
    ?
  8. Oh ja, ich hab vor dem feof eine Negation vergessen ;) So wurde die while-Schleife niemals ausgeführt. ich hab den Code oben bearbeitet ;)
  9. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!