net(t)worker hat geschrieben:800XE hat geschrieben:
csv ist einfacher zu lesen
fgets
explode
dann hat man die Datenfelder
naja... ganz so einfach ist es meist auch nicht... explode kann in den meisten Fällen für ein Produkt CSV nicht verwendet werden, weil damit auch Trennzeichen innerhalb von Beschreibungs-Texten erkannt werden und schon stimmt die Anzahl der Felder nicht mehr..... da musst in einer Schleife von trennzeichen zu Trennzeichen hüpfen und hierbei auch beachten ob es nun zwischen zwei " also innerhalb eines Textfeldes steht oder wirklich ein Trennzeichen ist...
NetWorker, du bist selbst Programmierer?
Ja, dein Einwand ist 100% korrekt .... für das "alte" CSV
Code: Alles auswählen
$head=fgetcsv($handle2, 24000, $delemiter2);
$RUN2=time()+60;echo(' #');flush();
while( $RUN && $RUN2 > ($nowsec=time()) )
{
if( $RUN && $csv1=fgetcsv($handle2, 80000, $delemiter2) )
der "fgetcsv" braucht etwa 10mal so lange wie ein "fgets + explode"
"fgets + explode" ist bei herkömmlichen CSV nicht immer einsetzbar, wie du richtig eingewändet hast
Aber auch der fgetcsv funktioniert nicht immer
In wenigen Fällen kommt es vor das der "fgetcsv" abstürtzt
Code: Alles auswählen
echo('goREAD');flush();
$csv1=fgetcsv($handle2, 80000, $delemiter2) )
echo('...READY');flush();
Es gibt Datensätze, die kommen nicht zum "..READY" .. hab nicht genau Analysiert warum der fgetcsv "abstürtzt", was falsch ist.
Ich überspringe Diese datensätze mit einen "fgets".
800XE hat geschrieben:
NetWorker, du bist selbst Programmierer?
Ja, dein Einwand ist 100% korrekt .... für das "alte" CSV
"fgetcsv" braucht etwa 10mal so lange wie ein "fgets + explode"
Ich rede eigentlich auch von csvAdvanced
=
Es gibt nur ein DelemiterZeichen, das TAB
Es gibt keine Anführungszeichen Eingrenzung der Datenfelder
Es dürfen trotzdem TAB und sogar RETURN bzw NEWLINE in den Datenfeldern drin stehen .....
.... Du bist Rpogrammierer? Du weist wie man das Macht?
Code: Alles auswählen
$textBuffer = 'Ich bin Zeile 1
Ich bin Zeile 2';
echo( nl2br( $textBuffer ) );
Als ProgrammQuelltext hässlich, da eine eventuelle Einrückung zerstört wird
Code: Alles auswählen
if ( irgendwas
{
if ( nochirgendwas
{
$textBuffer .= 'Ich bin Zeile 1
Ich bin Zeile 2';
}
}
echo( nl2br( $textBuffer ) );
Hübscher als ProgrammCode und genau damit auch csvTauglich
Code: Alles auswählen
if ( irgendwas
{
if ( nochirgendwas
{
$textBuffer .= "Ich bin Zeile 1\nIch bin Zeile 2";
}
}
echo( nl2br( $textBuffer ) );
csvAdvanced hat zusätzlich noch eine "RAEDY" Datenzeile am Ende ....
...
1. Der der liest, weis dann das er alles gelesen hat
1b. hat er nicht alles gelesen, kann der sagen "gib die Daten nochmal, mit Offset 123"
1bb oder der "WebService" oder wer auch immer, liefert per default nur via LIMIT .... = vollautomatische Aufteilung einer RIESIGEN Datei auf mehrere kleine Dateien
Gruß
Andy 800XE Zmuda