Timeout? nach Stunden. Nur wovon ausgelöst?

Alles, was den Apache betrifft, kann hier besprochen werden.

Timeout? nach Stunden. Nur wovon ausgelöst?

Postby EvilUser » 24. July 2008 06:57

Hallo Ihr,

ich möchte ein ziemlich langes INSERT ausführen:
    - MySQL (InnoDB)
    - PHP
    - Beides aktuelle Versionen.
    - Ausgeführt wird es im IE 7.0

:arrow: Anlegen tut er 282.723 Datensätze. Obwohl er 1.000.000 anlegen soll

Maßnahmen im PHP:
Code: Select all
    $countDs=1000000;
    $execution_time = (round( ($countDs*0.2)/60, 1));
    $max_execution_time=( (round($execution_time,0)+10) * 60 );
    $encoding       = "utf8";
    $collation      = "utf8_unicode_ci";

    ini_set(max_execution_time,$max_execution_time);
    set_time_limit();


Der Arbeitsspeicher wird glaube ich auch nicht zu voll. Liegt so bei 360MB (Systemauslastung)[Verfügbar= 1GB].
Zumindest sinkt er sogar beim Anlegen von 50.000 Datensätzen.
:arrow: Die brauchen ca 45 Minuten.

Ich weiß auch leider nicht wer den Abbruch als solches auslöst.
Im IE steht dann folgendes:
Code: Select all
Die Website kann nicht angezeigt werden.


Wer kann mir helfen? Weiß wirklich nicht weiter. :?
EvilUser
 
Posts: 14
Joined: 12. January 2008 18:20

Postby deepsurfer » 24. July 2008 09:19

Mein erster gedanke wäre die SESSION Time die ja dafür da ist das bei Inaktivitöt des Users die Session nach einer vorgegebenen Zeit abgeschaltet wird.

Mag sein das ich falsch liege, aber ein erster Gedanke
chirio Deep
Wie sagte einst der MCP aus Tron auf dem Bildschirm zu schreiben Pflegte
" ... end of communication ... "
User avatar
deepsurfer
AF Moderator
 
Posts: 6440
Joined: 23. November 2004 10:44
Location: Cologne
Operating System: Win-XP / Win7 / Linux -Debian

Postby Nobbie » 24. July 2008 11:42

Das macht man auch nicht via IE im Online Betrieb, sondern in einer lokalen Shell.

Und selbst wenn es überhaupt nicht anders geht, nicht via PHP und mysql_xxxx API sondern via system() und mysql-Kommandointerpreter, das ist im Faktor 100 schneller.

Und Last not Least, wenn das auch nicht gehen sollte, müssen die Datensätze auf mehrere Pakete aufgeteilt werden - das platzt aus allen Nähten und ist nicht für http geeignet.
Nobbie
 
Posts: 8767
Joined: 09. March 2008 13:04

Postby Xardas der Dunkle » 24. July 2008 18:11

Wie Noobie schon sagt, macht man sowas eher über ein Shell-Script oder du sorgst dafür das das ganze nicht in einem Aufruf passiert sondern, das sich die Seite zwischen Zeitlich z.B. über JavaScript oder einen meta-redirect neu läd (ich glaube nämlich der Location-Redirect würde hier auch nicht viel bringen).
D.h. du fügst z.B. beim ersten Aufruf die ersten 100 Datensätze ein, beim 2. die nächsten 100 usw ...

Zudem stinkt der IE :p
User avatar
Xardas der Dunkle
 
Posts: 482
Joined: 09. March 2008 19:40
Location: /var/www

Postby EvilUser » 25. July 2008 08:49

:D Danke erstmal für die rege Beteiligung und die guten Tipps.:D

Über ein Shell script "geht" das glaub ich von daher nicht, da ich die Daten in PHP Dynamisch erzeuge.
Und ich von Shell Scripts null Plan habe.

Mit dem zwischendurch senden würde ich mal testen. Da ist das Problem dass ich keinen Einstiegspunkt habe und demnach das Programm nicht weiß wo es wieder weitermachen soll.

Hintergrund: Ich lese ein Array mit Nachnamen und eins mit Vornamen.
Kombiniere alle Möglichkeiten zur Laufzeit währenddessen füge ich Zufallswerte (ebenfalls aus Arrays) zb:Straße, Ort, etc. hinzu
die aber auf Einmaligkeit geprüft werden.
Existiert Ein Datensatz mit dem Vornamen - der Straße - dem Ort dann variiere nochmal Zufallswerte.

:arrow: Mein Ziel: Kundendaten erstellen, die so echt wie möglich aussehen aber nicht wirklich existieren. Außer der Zufall will es.
:arrow: Warum: Ich brauche eine Testdatenbank, die als Beispielanwendung Verwendung finden soll.

Die SESSION Time kann ich wo einstellen?
EvilUser
 
Posts: 14
Joined: 12. January 2008 18:20

Postby Nobbie » 25. July 2008 10:31

Aber wieso führst Du das über den IE aus? Da ist doch gar keine Online Anforderung drin, Du kannst das ganze doch direkt via php.exe ausführen, das sog. "CLI" (Command Line Interpreter) von php. Einfach in einer DOSBox (cmd.exe) das Kommando eingeben:

Code: Select all
php script.php


Wenn Du mehr darüber wissen willst: http://de.php.net/manual/de/features.commandline.php
Nobbie
 
Posts: 8767
Joined: 09. March 2008 13:04


Return to Apache

Who is online

Users browsing this forum: No registered users and 3 guests