php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2005-2

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 24.10.2005, 16:58  
Benutzer
 
Registriert seit: 29.07.2003
Beiträge: 41
workaholic
Standard Abbruch beim Auslesen einer Textdatei

Hallo zussammen,

ich stehe hier vor einem Rätsel und finden keine Antwort. Ich lese eine Textdatei aus in dem ich Sie komplett durchlaufe ujnd Zeichen für Zeichen auslese.

$fp = fopen('TEST.DAT', 'r') or die("Kein Zugriff auf die TEST.dat");
WHILE ( ! feof ($fp) ) {
...
}

Ein bestimmt Anzahl an Zeichen ergibt dann immer den Inhalt für eine Variable und nach jedem Zeilenumbruch werden die Daten dann in die MySQL Tabelle geschrieben. Das funktioniert offline (habe xampp installiert) super! Ich habe dann zwei Tabellen. In der einen ca. 55000 Datensätze in der anderen ca. 5000 Datensätze. Jetzt lade ich das Script ins internet und änderen noch die Daten für Datenbank, Server usw und lasse es laufen. Nach ca. 5000 Datensätzen, die aber alle korrekt eingetragen werden sagt der Browser "fertig" und macht nichts mehr. Was ist mit den restelichen Daten. Es kommt keine Fehlermeldung und nichts. Er hört einfach auf. Das komische ist auch daß die Anzahl der Datensätze die eingetragen immer schunterschiedlich ist. Es schwankt immer zwischen 2000 und 5000 Einträgen. Ich weiß jetzt einfach nicht mehr wo ich den Fehler suchen soll. Habe auch schon unterschiedliche Browser ausprobiert. Aber immer das gleiche Lokal läufts einwandfrei und im Netz eben nicht.

Bin schon mal Dankbar für Euro Lösungsvorschläge
workaholic ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 24.10.2005, 17:16  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard Re: Abbruch beim Auslesen einer Textdatei

Zitat:
Zitat von workaholic
in der anderen ca. 5000 Datensätze. Jetzt lade ich das Script ins internet und änderen noch die Daten für Datenbank, Server usw und lasse es laufen. Nach ca. 5000 Datensätzen, die aber alle korrekt eingetragen werden sagt der Browser "fertig" und macht nichts mehr.
Hm? Dann verwendest du wohl die Datei mit den nur 5000 Datensätzen?!
Wenn du nicht mehr vom Code preisgibst, können wir dir nicht helfen. Der Inhalt der while ()-Schleife sowie ein oder zwei Zeilen der TEST.dat wären auch nicht schlecht...

Lass dir doch testweise alle Informationen anzeigen, die du aus der Datei liest und die du in die Datenbank schreibst (also eine Art Log-Datei).
Zergling-new ist offline  
Alt 24.10.2005, 17:33  
Gast
 
Beiträge: n/a
Standard

Tag,

timeouted sich vielleicht das Script auf dem Server?
Kann es sein, daß das Script für den Server einfach zu lange läuft?

Wenns Dein eigener Internetserver ist, oder kein safemode aktiviert ist probier mal per set_time_limit das Timeout einfach zu verzögern oder ganz zu deaktivieren.
 
Alt 24.10.2005, 18:02  
Benutzer
 
Registriert seit: 29.07.2003
Beiträge: 41
workaholic
Standard

Hmm, also die richtigen Dateien verwende ich auf jeden Fall. Es sind ja auch immer unterschiedlich viele Datensätze die in die Tabelle geschrieben werden. Ein Log Datei habe ich mir auch schon erstellt -> wird auch alles richtig aufgelistet und hört eben einfach irgendwann auf, immer wo anderes ohne Grund. Habe auch schon an ein Timeout gedacht aber das läuft höchstens zwischen 15 und 25 Sekunden. Außerdem müßte doch dann die Fehlermeldung mit dem Timeout kommen. Aber es passiert einfach gar nichts mehr. Schon seltsam.

Ich habe euch hier auch noch einen Auszug aus dem Script aber ich weiß nicht ob das weiterhilft. Denn ein Fehler ist ja nicht drin und funktioniert tuts lokal ja auch einwandfrei.


$fp = fopen('TEST.DAT', 'r') or die("Kein Zugriff auf die TEST.dat");

$zeichen_counter = 0;

WHILE ( ! feof ($fp) ) {

$zeichen_counter++;

$zeichen = $zeichen.fread($fp,1);

SWITCH ($zeichen_counter) {

CASE 6:

$dat_artikelnummer = $zeichen;
$zeichen = "";
break;

CASE 10:
$dat_groesse_stichformat = $zeichen;
$zeichen = "";
break;

CASE 13:
$dat_groesse_millimeter = $zeichen;
$zeichen = "";
break;

// Das Geht jetzt so weiter bis CASE 180 und dann wird der $zeichen_counter wieder auf 0 gesetzt
// und die Daten in die Tabelle geschreiben.
// ...


CASE 180:


$insert = "INSERT INTO test ( user_id, artikelnummer, int_artikelnummer, groesse_stichformat, groesse_millimeter, bezeichnung1, bezeichnung2, sonderkennzeichen, verkaufsprogramm, barcode, firmenkennzeichen, einkaufspreis_euro, verkaufspreis_euro, kartongroesse, farbnummer, modellnummer, materialart, schnallenart, fussbett, sohlenart, artikeltyp, sofortlieferkennzeichen, boersenkennzeichen, auslaufstufe, modestufe, sortimentsinhalt, artikeldatum, bestand, boersenrabatt, weite, warennummer, produktlinie, sortimentsstart, sortimentsverteilung, platzhalter, modmat3_nr ) VALUES ( '$user_id', '$dat_artikelnummer', '$dat_artikelnummer', '$dat_groesse_stichformat', '$dat_groesse_millimeter', '$dat_bezeichnung1', '$dat_bezeichnung2', '$dat_sonderkennzeichen', '$dat_verkaufsprogramm', '$dat_barcode', '$dat_firmenkennzeichen', '$dat_einkaufspreis_euro', '$dat_verkaufspreis_euro', '$dat_kartongroesse', '$dat_farbnummer', '$dat_modellnummer', '$dat_materialart', '$dat_schnallenart', '$dat_fussbett', '$dat_sohlenart', '$dat_artikeltyp', '$dat_sofortlieferkennzeichen', '$dat_boersenkennzeichen', '$dat_auslaufstufe', '$dat_modestufe', '$dat_sortimentsinhalt', '$dat_artikeldatum', '$dat_bestand', '$dat_boersenrabatt', '$dat_weite', '$dat_warennummer', '$dat_produktlinie', '$dat_sortimentsstart', '$dat_sortimentsverteilung', '$dat_platzhalter', '$modmat3_nr' )";
$insert_result = mysql_query( $insert );

IF ( ! $insert_result ) {

// Vermerken bei wechlen Artikelnummern es zu Fehlern gekommen ist.
//-------------------------------------------------------------------------------------------------------------------------------------------

$uebernahme_fehler = $uebernahme_fehler."Artikelnummer: $dat_artikelnummer - Größe: $dat_groesse_stichformat
";

}

$zeichen_counter = 0;

break;

DEFAULT:

}

}
workaholic ist offline  
Alt 24.10.2005, 18:55  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Die Art und Weise wie du die Datei ausliest mißfällt mir irgendwie sehr.
Gib doch eine Zeile deiner Test.dat mal an (von mir aus auch verändert). Vielleicht können wir dir dann eine effizientere Lösung vorschlagen?
Würde jetzt schon ein zeilenweises Einlesen + substr() vorschlagen anstatt diesem Zeichenweisen. Das ist meiner Meinung nach Murgs.

Außerdem ist deine Großschreibung von IF, DEFAULT, SWITCH, CASE mehr als unüblich. Großschreibung sollte nur für Konstanten verwendet werden (IST natürl. Geschmaksache abah wen ale sych DRAN halt en kan mann S beßer lessen)
Zergling-new ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
kann textdatei nicht auslesen Eardy PHP Tipps 2008 1 28.02.2008 16:23
bestimmte Textblöcke aus einer Textdatei auslesen Canni PHP Tipps 2007 7 10.08.2007 17:12
[Erledigt] gelöst: Tabelle auslesen -> Gleiche Einträge nur 1 Mal Datenbanken 3 31.03.2006 01:44
Textdatei auslesen, aber ohne Komentare HSFighter PHP Tipps 2006 31 23.02.2006 10:07
Textdatei auslesen und auf mehrere Seiten verteilen? nicobischof PHP Tipps 2005-2 4 02.10.2005 11:24
Daten eintragen und auslesen Rettungsdackel Datenbanken 0 14.09.2005 16:29
Textdatei mit unregelm. Werten in versch. Größen auslesen? PHP Tipps 2005 6 14.01.2005 09:38
Textdatei auslesen, Inhalt in HTML|PHP ausgeben. PHP Tipps 2004-2 25 22.12.2004 01:34
Werte in Textdatei speichern und auslesen PHP Tipps 2004-2 12 21.12.2004 09:22
Textdatei hochladen und per PHP auslesen PHP Tipps 2004-2 2 16.12.2004 12:53
Zeilenweise eine Textdatei auslesen PHP Tipps 2004 12 29.10.2004 10:29
[Erledigt] Werte aus Textdatei auslesen PHP Tipps 2004 22 19.10.2004 15:00
Textdatei auslesen me PHP Tipps 2004 19 26.08.2004 12:59
Laufschrift (auslesen über Textdatei) PHP Tipps 2004 6 22.08.2004 19:58
Textdatei auslesen und Dateien downloaden PHP Tipps 2004 1 15.08.2004 13:05

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
datei bis abbruchbedingung auslesen, php abbruch bei großer xml datei, gts einlesen warennummern abbruch, mysql textdatei zeilenweise einlesen insert -csv -xml -pdf, php zeichen abruch

Alle Zeitangaben in WEZ +2. Es ist jetzt 08:47 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.