| PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here! |
 |
|

08-06-2005, 21:56
|
|
Paulus
Newbie
|
|
Registriert seit: Jan 2005
Beiträge: 35
|
|
CSV Datei zu groß ?
Hallo, wie wird in der Regel eine CSV Datei eingelesen ? Zeile für Zeile oder wird erst die ganze Datei in den Speicher eingelesen und dann Zeile für Zeile eingetragen ?
Ich habe folgendes Problem. Sobald eine CSV Datei eine bestimmte größe hat, werden keine Daten eingelesen.
PHP-Code:
<?php
// Ganze Datei in Speicher einlesen
$dateiname="./uploaded/".$nickname."_xxx.csv";
$f=fopen($dateiname,"r");
$puffer="";
while (!feof($f)) {
$puffer.=fgets($f); }
fclose($f);
?>
....cut....
PHP-Code:
<?php
// Uploaddatei öffnen
$dateiname="./uploaded/".$nickname."_xxx.csv";
if ( $f=fopen($dateiname,"r"))
{
// Datei Zeile für Zeile einlesen
$eingestellte_auktion=0;
$laenge=filesize($dateiname);
while(!feof($f))
{
$felder=fgetcsv($f,$laenge,";") ;
if (count($felder)==21 )
?>
Kann es sein das es daran liegt das die Datei erst in den Speicher gelesen wird ?
Gruß Paulus
|

08-06-2005, 22:21
|
 |
onemorenerd
 Moderator
|
|
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.481
|
|
PHP-Code:
if ($f = fopen($dateiname,"r")) {
$laenge = filesize($dateiname);
while (!feof($f)) {
$felder=fgetcsv($f,$laenge,";");
Lass dir $felder mal ausgeben ...
|

08-06-2005, 22:27
|
|
Paulus
Newbie
|
|
Registriert seit: Jan 2005
Beiträge: 35
|
|
Verstehe ich nicht so ganz. Ich habe nicht sehr viel Ahnung von PHP.
Kannst Du das weiter definieren ?
|

08-06-2005, 22:31
|
|
Heinervdm
Newbie
|
|
Registriert seit: Jan 2005
Ort: Neuwied
Beiträge: 29
|
|
Also fgetcsv basiert auf fgets,
fgets liest entweder bis zum nächsten zeilenumbruch, bis EOF oder bis $length-1, je nachdem was früher eintritt.
In deinem Fall wird der Zeilenumbruch immer früher eintreten.
Ab welcher größe deiner CSV Datei funktioniert es denn nicht mehr?
stimmt der Wert vieleicht mit dem von MEMORY_LIMIT in der php.ini überein? Dann wirst du es wohl nicht schaffen größere Dateien einzulesen. (Standartmäßig sind es 8MB)
|

08-06-2005, 22:33
|
|
Paulus
Newbie
|
|
Registriert seit: Jan 2005
Beiträge: 35
|
|
Die Datei selber ist 50 MB groß. Alle Serverwerte sind am Limit. Stehen alle PHP Einstellungen auf 100 MB. Bis 15 MB Dateien werden eingelesen.
|

09-06-2005, 08:09
|
|
RanzigeMilch
Registrierter Benutzer
|
|
Registriert seit: May 2005
Ort: Darmstadt
Beiträge: 757
|
|
sry gehirnfurz delete pls bin zu müd grad
__________________
Die Milch bleibt ranzig!
|

09-06-2005, 08:16
|
jahlives
Master  
|
|
Registriert seit: Jun 2004
Ort: Hooker in Kernel
Beiträge: 8.283
|
|
Mal folgendes probiert ?
PHP-Code:
$string = file_get_contents("deine_datei.csv");
var_dump($string);
Gruss
tobi
|

09-06-2005, 08:36
|
|
Paulus
Newbie
|
|
Registriert seit: Jan 2005
Beiträge: 35
|
|
[QUOTE] Original geschrieben von jahlives
[B]Mal folgendes probiert ?
PHP-Code:
$string = file_get_contents("deine_datei.csv");
var_dump($string);
Was bewirkt das ganze denn ?
|

09-06-2005, 08:39
|
|
mrhappiness
PHP Guru
|
|
Registriert seit: Oct 2002
Beiträge: 14.890
|
|
file_get_contents, var_dump
Das bewirkt das!
Und wenn du's probiert hättest, hättest du auch gleichs chreiben können, ob es funktioniert oder nicht...
__________________
Ich denke, also bin ich. - Einige sind trotzdem...
|

09-06-2005, 08:50
|
|
Paulus
Newbie
|
|
Registriert seit: Jan 2005
Beiträge: 35
|
|
Hätte ich schon probiert wenn ich wüsste an welche Stelle das ganze kommt. Hab halt nicht so viel Ahnung von PHP und muss dann mehrmals testen.
|

09-06-2005, 10:08
|
|
Paulus
Newbie
|
|
Registriert seit: Jan 2005
Beiträge: 35
|
|
Zitat:
Original geschrieben von mrhappiness
file_get_contents, var_dump
Das bewirkt das!
Und wenn du's probiert hättest, hättest du auch gleichs chreiben können, ob es funktioniert oder nicht...
|
Wenn ich den String einfüge, wird entweder alles auf dem Bildschirm ausgegeben oder es passiert garnichts. Jenachdem wo ich den hinsetze.
|

09-06-2005, 10:13
|
|
mrhappiness
PHP Guru
|
|
Registriert seit: Oct 2002
Beiträge: 14.890
|
|
Könnte es sein, dass das bedeutet, dass die Datei sehr wohl komplett eingelesen werden kann?
__________________
Ich denke, also bin ich. - Einige sind trotzdem...
|

09-06-2005, 10:15
|
|
Paulus
Newbie
|
|
Registriert seit: Jan 2005
Beiträge: 35
|
|
Das weiss ich nicht. Ich weiss nur das bei so großen Dateien keine Daten eingetragen werden.
|

09-06-2005, 10:55
|
jahlives
Master  
|
|
Registriert seit: Jun 2004
Ort: Hooker in Kernel
Beiträge: 8.283
|
|
Probier jetzt folgendes:
PHP-Code:
$string = nl2br(file_get_contents("deine_datei.csv"));
$fp = fopen("test_datei.csv","w");
$string = $string."<br />Testeintrag";
fputs($fp,$string);
fclose($fp);
Jetzt öffnest du die Datei (test_datei.csv) und schaust ob am Ende der String "Testeintrag" steht. Wenn ja dann funzt es, wenn nein dann ist die Datei wirklich zu gross.
Gruss
tobi
|

09-06-2005, 12:58
|
|
Paulus
Newbie
|
|
Registriert seit: Jan 2005
Beiträge: 35
|
|
Danke. Werde ich heute Abend mal testen.
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
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.
|
|
|
|
PHP News
|