php problem
Ezekiel 16.09.2003 - 21:13 594 9
Ezekiel
OC Addicted
|
Ich habe ein Problem mit einem php script dass aus einer textdatei auslesen und das ergebnis in 2 variablen splitten sollte. es erscheint keine fehlermeldung, die seite lädt einfach ewig. wenn ich fgets gegen fread austausche tritt das problem nicht mehr auf aber das ergebnis auch nicht . findet wer einen fehler ? tia, ezekiel $fp=fopen("bla.txt","r");
$data=fgets($fp,1024);
while(!feof($fp)) {
list($bla1,$bla2)=split(",",$data,2);
echo "$bla1";
echo "$bla2";
}
fclose($fp);
Bearbeitet von Ezekiel am 04.10.2003, 11:55
|
Ezekiel
OC Addicted
|
hab die seite jetzt mal ca. 5 minuten laden lassen, mit dem ergebnis das die selbe zeile ca ~250-500 mal ausgegeben wurde?! seltsam ...
|
PuhBär
Schau ned so genau
|
wie gross ist die datei?
du liest mit fgets ja nur 1024byte aus und innerhalb der while-schleife lest ja kan text mehr aus der datei aus, sprich feof wird nie eintreten
->
ich hätts so probiert:
while ( !feof($fp) ) { list($bla1,$bla2)=split(",",$data,2); echo "$bla1"; echo "$bla2"; }
|
watchout
Legendundead
|
wie gross ist die datei?
du liest mit fgets ja nur 1024byte aus und innerhalb der while-schleife lest ja kan text mehr aus der datei aus, sprich feof wird nie eintreten
->
ich hätts so probiert:
while ( !feof($fp) ) { list($bla1,$bla2)=split(",",$data,2); echo "$bla1"; echo "$bla2"; } also irgendwie is das das gleiche nomal Ezekiel: Du hast nur ein ganz kleines bissel falsch gmacht $fp=fopen("bla.txt","r");
while(!feof($fp))
{
$data=fgets($fp,1024);
list($bla1,$bla2)=split(",",$data,2);
echo "$bla1";
echo "$bla2";
}
fclose($fp);
so müssts eigentlich funken
|
PuhBär
Schau ned so genau
|
*huch* yo, hast recht
hab des fgets vergessen
übrigens, einfacher gehts mit:
$lines = file ('foo.bar');
$lines ist dann ein array mit jeweils 1 zeile als value
|
watchout
Legendundead
|
*huch* yo, hast recht
hab des fgets vergessen
übrigens, einfacher gehts mit:
$lines = file ('foo.bar');
$lines ist dann ein array mit jeweils 1 zeile als value er braucht aber anscheinend genau 1024, und nicht \n als datensatztrennung...
|
Rektal
Here to stay
|
fgets() liest unter anderem auch bis \n foreach (file("bla.txt") as $line) {
list($bla1, $bla2) = explode(",", $line, 2);
}
explode() waere in diesem fall split() vorzuziehen da split() eine regex erwartet, explode() nur einen literalen string (performance, wers braucht).
|
Ezekiel
OC Addicted
|
dankeschön. werds heute am nachmittag probieren
|
watchout
Legendundead
|
fgets() liest unter anderem auch bis \n ist mir klar, aber es is trotzdem möglich, dass er eine 1024er begrenzung braucht, aber ihm is es ja völlig wurscht - er äussert sich auf solche sachen sowieso nicht... btw: http://at.php.net/function.fgetcsv is speicherschonender als file() ...
|
Ezekiel
OC Addicted
|
die 1024 waren nur eine hausnummer fürs testen, grundsätzlich muss er bis zeilenende lesen und das sind eh viel weniger
|