CronJob-Service
bei SELFPHP mit ...
|
+ minütlichen Aufrufen
+ eigenem Crontab Eintrag
+ unbegrenzten CronJobs
+ Statistiken
+ Beispielaufrufen
+ Control-Bereich
Führen Sie mit den CronJobs von
SELFPHP zeitgesteuert Programme
auf Ihrem Server
aus. Weitere Infos

|
:: Anbieterverzeichnis ::
Globale Branchen
Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP 
:: Newsletter ::
Abonnieren Sie hier den kostenlosen
SELFPHP Newsletter!
|
Off Topic Area Hierein gehört alles, was nichts mit PHP, MySQL, Apache oder ähnlichem zu tun hat |

17.06.2007, 09:11:18
|
Anfänger
|
|
Registriert seit: Sep 2006
Beiträge: 20
|
|
Browser bricht Verbindung ab
Hallo Leute,
ich habe ein PHP-Script mit dem ich eine csv-Datei zeilenweise auslese, die einzelnen Spalten überprüfe, falls nötig bearbeite und dann die Zeile in eine Datenbank schreibe. Danach habe ich eine echo-Ausgabe in der die Menge, Änderungen usw. angezeigt werden.
Soweit kein Problem, aber wenn ich eine größere mit knapp 200.000 Zeilen habe, verliert mein Browser die Verbindung. Das Script wird zwar vollständig abgearbeitet, soll heißen, dass alle Zeilen in der Datenbank vorhanden sind aber halt die echo-Ausgabe nicht mehr im Browser angezeigt wird. Es gibt keine Fehlermeldungen und der Bildschirm bleibt leer.
Wenn ich jetzt z.B. nach jeder 1.000sten Zeile ein echo "1.000 Zeilen bearbeitet"; eingebe wird auch die letze echo-Ausgabe (Menge, Änderungen...) angezeigt.
Hat jemand einen Tipp wie ich die Verbindung zum Browser aufrecht erhalten kann ohne dass ich zwischendurch ein echo einzugeben?
Gruß Michael
|

17.06.2007, 12:58:55
|
Anfänger
|
|
Registriert seit: Sep 2006
Beiträge: 5
|
|
AW: Browser bricht Verbindung ab
Wie ist die Ausgabe der Zeilen realisiert?
Wird jede Zeile sofort mit echo an den Ausgabepuffer geschickt, oder wird ein String "gefüllt", der dann nach dem kompletten Auslesevorgang "als ganzes" an den Browser gesendet wird?
Ist Letzteres der Fall, könnte dir das memory_limit einen Strich durch die Rechnung machen.
Es wäre auch empfehlenswert, das Error-Logging einzuschalten, um zu sehen, ob PHP etwaige Fehlermeldungen ausgibt, die den Browser nicht mehr erreichen:
PHP-Code:
error_reporting(E_ALL | E_STRICT);
ini_set('log_errors',TRUE);
ini_set('error_log','GEWÜNSCHTER_PFAD_ZUM_ERROR.LOG');
|

18.06.2007, 11:57:14
|
Anfänger
|
|
Registriert seit: Sep 2006
Beiträge: 20
|
|
AW: Browser bricht Verbindung ab
Hallo LAMAU,
Zitat:
Wird jede Zeile sofort mit echo an den Ausgabepuffer geschickt, oder wird ein String "gefüllt", der dann nach dem kompletten Auslesevorgang "als ganzes" an den Browser gesendet wird?
|
ich habe beide Varianten ausprobiert.
Zitat:
Es wäre auch empfehlenswert, das Error-Logging einzuschalten, um zu sehen, ob PHP etwaige Fehlermeldungen ausgibt, die den Browser nicht mehr erreichen:
|
im log stehen nur leere Variablen:
Zitat:
"[18-Jun-2007 11:13:16] PHP Notice: Undefined variable: optionen in /home/www/web0/html/...."
|
also keine ERRORS oder WARNINGS
Ich habe jetzt die gleiche csv-Datei bestimmt 50 mal durch das Script laufen lassen, davon hat es 10 mal ohne Probleme geklappt, 40 mal waren alle Daten in der DB vorhanden aber ich hatte im Browser keine echo-Ausgabe.
Ist schon komisch, mal klappt's mal nicht!?
Ich hab auch verschiedene Browser probiert Firefox2, IE7, Opera9 und Konquere.
Ich werde jetzt nochmal mysql unter die Lupe nehmen, vielleicht finde ich da was.
Bis ich den Fehler gefunden habe werde ich die großen csv-Dateien einfach aufteilen.
Trotzdem vielen Dank für Deine Hilfe.
Gruß Michael
|

18.06.2007, 11:59:39
|
 |
SELFPHP Guru
|
|
Registriert seit: May 2003
Beiträge: 7.187
|
|
AW: Browser bricht Verbindung ab
Du kannst mal ausprobieren, nach jeder Ausgabe explizit die Funktion flush() aufzurufen. Alternativ kannst du auch implicit_flush() aktivieren.
|

18.06.2007, 14:31:17
|
 |
SELFPHP Guru
|
|
Registriert seit: Dec 2003
Ort: Erfurt
Alter: 76
Beiträge: 4.001
|
|
AW: Browser bricht Verbindung ab
Zitat:
Zitat von -=LUPO=-
Ist schon komisch, mal klappt's mal nicht!?
|
Naja, so ein Browser will etwas zu knabbern haben, wärend er wartet. Ein paar ungepufferte Echos - ohne HTML Tabellen! - beschäftigen den Kollegen zwar etwas, aber die Geduld ist nicht grenzenlos.
btw: solche Aktionen, 200.000 Datensätze hinzufügen, lassen ein größeres Projekt vermuten. Normalerweise mietet man sich dafür einen Server, weil es da kein Problem ist, die CSV Files per crontab und shell (CLI) zu importieren und dem Absender nach erfolgreichen Import eine Email zu schicken. Ist wesentlich effizienter als Ping-Pong mit dem Client zu spielen.
|

20.06.2007, 06:16:16
|
Anfänger
|
|
Registriert seit: Sep 2006
Beiträge: 20
|
|
AW: Browser bricht Verbindung ab
Hallo zusammen,
Zitat:
Zitat von xabbuh
Du kannst mal ausprobieren, nach jeder Ausgabe explizit die Funktion flush() aufzurufen. Alternativ kannst du auch implicit_flush() aktivieren.
|
Sehr guter Vorschlag :)
Damit müsste es doch auch möglich sein eine Fortschritt-Anzeige "zu basteln"
Zitat:
Zitat von meikel
Naja, so ein Browser will etwas zu knabbern haben, wärend er wartet. Ein paar ungepufferte Echos - ohne HTML Tabellen! - beschäftigen den Kollegen zwar etwas, aber die Geduld ist nicht grenzenlos.
|
Klar, Du musst ja auch was knabbern, wenn Du nicht verhungern willst ;)
Zitat:
Zitat von meikel
btw: solche Aktionen, 200.000 Datensätze hinzufügen, lassen ein größeres Projekt vermuten. Normalerweise mietet man sich dafür einen Server, weil es da kein Problem ist, die CSV Files per crontab und shell (CLI) zu importieren und dem Absender nach erfolgreichen Import eine Email zu schicken. Ist wesentlich effizienter als Ping-Pong mit dem Client zu spielen.
|
Ich habe einen eigenen Server, Dein Vorschlag "per crontab" ist zwar gut aber kann im Moment noch nicht umgesetzt werden weil die Dateien noch zu unterschiedlich sind und teilweise noch von Hand bearbeitet werden müssen. Nach der Vereinheitlichung werde ich die Dateien auf jeden Fall per crontab bearbeiten, man hat doch auch besseres zu tun als auf den Browser zu warten ;)
Vielen Dank an Lamau, xabbuh und meikel.
Gruß, Michael
Geändert von -=LUPO=- (20.06.2007 um 06:41:38 Uhr)
|

20.06.2007, 10:09:14
|
 |
SELFPHP Guru
|
|
Registriert seit: Dec 2003
Ort: Erfurt
Alter: 76
Beiträge: 4.001
|
|
AW: Browser bricht Verbindung ab
Zitat:
Zitat von -=LUPO=-
Ich habe einen eigenen Server, Dein Vorschlag "per crontab" ist zwar gut aber kann im Moment noch nicht umgesetzt werden weil die Dateien noch zu unterschiedlich sind und teilweise noch von Hand bearbeitet werden müssen.
|
Ui... 200.000 Datensätze "zu fuß" editieren?
Zitat:
Nach der Vereinheitlichung werde ich die Dateien auf jeden Fall per crontab bearbeiten, man hat doch auch besseres zu tun als auf den Browser zu warten ;)
|
Mach den Test in der Shell! Die CSV-Files schickst Du entweder per SCP/FTP oder per Formular hin.
Schreibe in das Importscript janz oben vor dem PHP Tag eine shebang Zeile:
Beachte, daß nach dem -q ein Linux-ENTER erwartet wird!
Dann kannste das Script, welches dann natürlich mit absoluten Pfaden arbeiten muß, ausführbar machen und in der Shell mit ./import.php starten.
So mache ich es zumindest, aber ich bin ja faul wie die Sünde. <g>
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
Themen-Optionen |
|
Ansicht |
Linear-Darstellung
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 13:01:20 Uhr.
|