php.de

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

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 25.01.2005, 14:54  
Gast
 
Beiträge: n/a
Standard filesize und fgets, fgetcsv

Hallo,

ich möchte mit fgetcsv eine mit Trennzeichen getrennte Textdatei auslesen. Da ich nicht immer weiß wie groß die Datei ist, möchte ich mit filesize() die Größe der Datei auslesen und an fgetcsv übergeben. Siehe Beispiel unten:

PHP-Code:
    function get_csv($datei$trennzeichen) {
        
$size filesize($datei);
        
        
$datei fopen("$datei""r");
        while(
$data[] = fgetcsv($datei$size"$trennzeichen"));
        
        return 
$data;
    } 
Allerdings kommt bei meiner Datei die eine Größe von 792 KB folgende Meldung:

PHP-Code:
Fatal errorAllowed memory size of 8388608 bytes exhausted (tried to allocate 40 bytesin ... 
Kann es sein, dass es für die Funktion eine Dateigrößenbeschränkung gibt? Oder was mache ich falsch?

Beste Grüße,

Björn
 
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 25.01.2005, 15:17  
Gast
 
Beiträge: n/a
Standard

Wenn die Datei 792 KB groß ist, das Script aber über 8MB Speicher verbraucht, muss der Fehler wohl eher woanders liegen. Außerdem macht es bei fgetcsv nicht wirklich Sinn, die Dateigröße anzugeben, da maximal bis Zeilenende gelesen wird.

Gruß
phpfan
 
Alt 25.01.2005, 15:23  
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von phpfan
Wenn die Datei 792 KB groß ist, das Script aber über 8MB Speicher verbraucht, muss der Fehler wohl eher woanders liegen.
Woran könnte es denn liegen...?

Zitat:
Zitat von phpfan
Außerdem macht es bei fgetcsv nicht wirklich Sinn, die Dateigröße anzugeben, da maximal bis Zeilenende gelesen wird.
Also ich denke schon das ich ein Dateigröße benötige, denn wenn ich die Angabe wegnehme, wird garnichts ausgelesen.
 
Alt 25.01.2005, 15:24  
Gast
 
Beiträge: n/a
Standard

.
..
...
Edit: überflüssiger schwachsinn entfernt. :wink:
 
Alt 25.01.2005, 15:26  
Gast
 
Beiträge: n/a
Standard

Aus der Doku:
fgetcsv
(PHP 3>= 3.0.8, PHP 4 , PHP 5)

fgetcsv -- Liest eine Zeile von der Position des Dateizeigers und prüft diese auf Komma-Separierte-Werte (CSV)
Beschreibung
array fgetcsv ( resource handle, int length [, string delimiter [, string enclosure]])

Die Funktion fgetcsv() ist ähnlich der Funktion fgets(), nur dass fgetcsv() die eingelesene Zeile auf Felder im CSV Format (kommaseparierte Felder) hin überprüft, und ein Array mit den gelesenen Feldern zurückgibt. Ist der optionale dritte Parameter delimiter (Trennzeichen) nicht angegeben, wird standardmäßig das Komma benutzt. Der optionale Parameter enclosure ist auf ein Zeichen limitiert und darf nicht null sein. Enthält enclosure mehr als ein Zeichen, wird nur das erste verwendet.

Anmerkung: Der Parameter enclosure wurde in PHP 4.3.0 eingeführt.

Der Parameter handle muss ein gültiger Dateizeiger sein, d.h. die Datei, auf die gezeigt wird, muss zuvor mit fopen(), popen() oder fsockopen() geöffnet worden sein.

Length muss größer sein als die längste in der CSV-Datei vorhandene Zeile (um das Erkennen von EndOfLine (Ende der Zeile) Zeichen zu ermöglichen).

Zitat:
Woran könnte es denn liegen...?
Keine Ahnung, ich kenne das Script ja nicht.

Gruß
phpfan
 
Alt 25.01.2005, 15:28  
Gast
 
Beiträge: n/a
Standard

Und warum nicht einfach mit file() einlesen?
 
Alt 25.01.2005, 15:30  
Gast
 
Beiträge: n/a
Standard

@m80331
while($data[] = fgetcsv(...)) und: while($data[] == fgetcsv(...))
Da will doch niemand vergleichen, wenn, dann doch bitte so
PHP-Code:
$data = array();
while (
$values fgetcsv(...))
  
$data[] = $values
Zitat:
Und warum nicht einfach mit file() einlesen?
Kann es sein, dass du den Sinn von fgetcsv nicht kennst?

Gruß
phpfan
 
Alt 25.01.2005, 15:33  
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von m80331
Was ist data[] ?
data[] ist ein array...

Zitat:
Zitat von m80331
Und, vergleich mal:

while($data[] = fgetcsv(...))

und:

while($data[] == fgetcsv(...))

und:

solange date gleich fgetcsv ist tue was ???
Also ich weiß nicht was du meinst... die while-Schleife ist eigentlich richtig!
 
Alt 25.01.2005, 15:35  
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von m80331
Und warum nicht einfach mit file() einlesen?
Am besten ließt du Dir mal das hier durch...

Die Funktion fgetcsv() ist ähnlich der Funktion fgets(), nur dass fgetcsv() die eingelesene Zeile auf Felder im CSV Format (kommaseparierte Felder) hin überprüft, und ein Array mit den gelesenen Feldern zurückgibt.
 
Alt 25.01.2005, 15:35  
Gast
 
Beiträge: n/a
Standard

*mal nachlesen tue was fgetcsv kann*

Ups shit!

Ähm stimmt ich kannte fgetcsv nicht, dachte daher es soll hier eine billige vergleichsoperation erfolgen, vergesst einfach was ich geschrieben hatte.
 
 


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
problem beim lesen mit fgets jogisarge PHP Tipps 2008 1 09.06.2008 18:29
[solved] (readfile + filesize) von anderer Domain Melchior PHP Tipps 2006 3 12.06.2006 21:42
Filesize Warnung unterdrücken wenn datei nicht vorhanden ? Cytrix PHP Tipps 2006 6 04.05.2006 17:42
Poblem: fgetcsv(): 3 is not a valid stream resource pil PHP Tipps 2006 14 04.04.2006 09:11
fgets und leerzeichen notyyy PHP Tipps 2006 4 19.02.2006 23:00
File up& download in MySQL // Problem hier: Filesize PHP Tipps 2005-2 1 20.09.2005 15:30
"Stat failed" mit filesize() PHP Tipps 2005-2 4 06.07.2005 13:55
Problem mit fgets PHP Tipps 2005 3 03.02.2005 15:16
[Erledigt] mail versand mit anhang (-- fopen(), fread(), filesize() --) PHP Tipps 2005 5 29.01.2005 18:36
fgets() ????? PHP Tipps 2005 12 19.01.2005 09:20
fgetcsv und Datum konvertieren PHP Tipps 2004 0 28.09.2004 11:40
kann man filesize() formatieren? Promaetheus PHP Tipps 2004 8 16.09.2004 16:12
filesize() will ned ganz ?!? rocco PHP Tipps 2004 5 08.09.2004 15:36
Filesize mit absoluten URLs? PHP Tipps 2004 3 26.07.2004 17:39
filesize() JEGO PHP Tipps 2004 5 12.06.2004 22:50

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
fgetcsv beispiel, fgetcsv length, fgetcsv allowed memory size, fgets zeilenende, fgetcsv speicher, php fgetcsv length, fgetcsv allowed memory, fgets vs fgetcsv, fgetcsv enclosure, fgetcsv dateigröße, fgetcsv memory, fgets filesize, php fgetcsv allowed memory size, fgetcsv trennzeichen, php fgetcsv zeilenende, fgetcsv allowed memory size of, dateigröße fgetc, php fgets zeilenende, php fgetcsv enclosure, fgets trennzeichen

Alle Zeitangaben in WEZ +2. Es ist jetzt 10:16 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.