Codegenerator bringt bei 175000 Codes einen timeout

laempisch

Erfahrenes Mitglied
Hallo liebes Forum,

ich habe mir einen Codegenerator gebaut.

Leider macht dieser bei ca 175000 Codes Schlapp. Das heisst es kommt ein timeout.

Ich habe die max_execution_time schon auf 3600 sec gestellt. Aber das soll ja irgendwann mal ne webanwendung werden :-)

Habt Ihr eine Idee was ich ändern kann.

Ich benötige ca 1.000.000 Codes pro lauf.

PHP:
<?php


  srand(microtime()*1000000);
  $zufall = rand(1,100);

    $timestamp =time(); 
    $datum = date("d_m_Y",$timestamp); //mit der Funktion "date" Variable für das Datum festlegen 
    $uhrzeit = date("H_i_s",$timestamp); //mit "date" aktuelle uhrzeit setzen 
     
    $dateiname = $datum.$uhrzeit.$zufall.".txt"; 

    function randStringINTEGER( $length ) 
    {
        return str_pad(rand(0, pow(10, $length)-1), $length, '0', STR_PAD_LEFT);
    }

    function randStringALPHA( $length )
    {
        $chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMOPQRSTUVWXYZ';
        $strlen = strlen($chars);
        $str = '';
        for( $i=0; $i<$length; $i++ ) { 
            $str .= $chars{rand(0, $strlen - 1)};
        }
        return $str;
    }

    $fp = fopen("$dateiname","w+"); 
    $array = array();
    for( $i=0; $i<"175000"; ) {
        $temp = randStringALPHA(4).randStringINTEGER(4);
        $randString = $temp{0}.$temp{5}.$temp{3}.$temp{2}.$temp{6}.$temp{7}.$temp{1}.$temp{4};
        if( !isset($array[$randString]) ) {
            $array[$randString] = $randString;
            fwrite($fp, $randString."\n");
            $i++;
        }
    }
    fclose($fp);

?>

Vielen Dank für Eure Hilfe.

laempisch
 
Bei mir benötigt dieses Skript nur 4 Sekunden; bei einer Million sind es zirka 23 Sekunden. Hast du mal die Log-Dateien geprüft, ob es irgendwelche Fehler gibt?
 
Hallo,

danke für die prompte Antwort:

Im log steht folgendes:
PHP Fatal error: Maximum execution time of 90 seconds exceeded in kgen.php on line 32

In das 1und1 log kann ich leider nicht schauen :-)


Viele Grüsse,
laempisch
 
Hallo,

wenn ich das komplett anmache kommt bei 1und1 folgender Fehler:

Error 500 - Internal server error
Ein interner Fehler ist aufgetreten!
Bitte versuchen Sie es zu einem späteren Zeitpunkt


und lokal:

Fatal error: Maximum execution time of 90 seconds exceeded in C:\wamp\www\kgen.php on line 35

Viele Grüsse,

laempisch
 
Also ich habe es jetzt nochmal lokal mit XAMPP versucht, leider ohne Erfolg.

Hat das script jemand mal bei einem webhoster getestet.

Viele Grüsse,

laempisch
 
Wird denn überhaupt eine neue Datei erstellt? Möglicherweise schlägt ja bereits das fehl.
 
hmm... hab es auch mal probiert aber auch ohne erfolg.... nicht einmal mit error_reporting(E_ALL) kommt da was.... bzw. der zeigt immer bei jedem durchlauf auf verschiedene lines. achja nochwas.. @fwrite unten im script müsste doch \r\n hin weil du es bestimmt untereinander haben möchtest ;) Nur zur Info :)
 
for( $i=0; $i<"175000"; )

seh ich dass richtig dass du dich wunderst dass es bei 175000 aufhört?
Bei mir bringt das Script lokal den Fehler:
Fatal error: Maximum execution time of 60 seconds exceeded in C:\xampplite\htdocs\gen.php on line 33


MFG
 
Hi,
also ich habe das Script mal auf meinen Server getestet, einen Vserver von S4Y
Also nach dem ich memory size auf 500mb gestellt habe und Max ausführungszeit, auf 0 (unendlich) wurden mit auf anhieb 1.000.000 Keys erstellt. Dauerte nur ca. 40 sec.
Die Datei ist jedoch 9 MB groß.... am einfachsten ist es wohl wenn du die Datei nicht offen lässt. Sprich einfach immer nur eine Zeile neu einfügst mit öfnen und schließen, dann kannst du es schneller machen, als wenn du immer deine 90 sec. bekommst, oder dein Speicher voll gefressen wird.

for( $i=0; $i<"175000"; )

seh ich dass richtig dass du dich wunderst dass es bei 175000 aufhört?
Bei mir bringt das Script lokal den Fehler:
Fatal error: Maximum execution time of 60 seconds exceeded in C:\xampplite\htdocs\gen.php on line 33


MFG

genau das habe ich auch bemerkt, sowas kann nicht gehen, zumindest streikt mein Script dann.
 
Zuletzt bearbeitet:
Zurück