URL: https://www.overclockers.at/coding-stuff/php_script_performance_139850/page_1 - zur Vollversion wechseln!
Hallo!
Mein Script, welches aus einem csv was ausliest funktioniert normalerweise sehr gut
Code: PHP$zeilen = file('file.txt'); foreach($zeilen as $zeile){ list($1,$2) = split(';',trim($zeile)); } //tue irgendwas mit den Werten
firefox kann sich nicht bei einer zu heftigen serverseitigen arbeit aufhaengen
moegliche dinge: er timed aus
oder er bekommt zuviel daten
bei ersterem wird der server zu lange fuer die arbeit brauchen: loesungen:
* ueberlegen ob man wirklich alles auslesen muss
- braucht man wirklich alle 85000 eintraege jedesmal?
- oder doch nur einen teil?
* umstieg auf eine datenbank in erwaegung ziehen
* nicht jedesmal das das csv file processen, sprich die berechnungsoutputs zwischenzuspeichern und dieses dann aufrufen
bei zweiterem musst du einfach nur teile des outputs schicken
sprich [prev] 3000-6000 [next]
Was hat das Skript mit dem Clienterror zu tun? 85k Zeilen sind eben eine große Datenmenge, bis die übertragen (und bereitgestellt) wurde, vergeht eben Zeit.
Stell notfalls das Timeout höher bzw. gedulde dich.
Zitat von funkabei ersterem wird der server zu lange fuer die arbeit brauchen: loesungen:
* ueberlegen ob man wirklich alles auslesen muss
- braucht man wirklich alle 85000 eintraege jedesmal?
- oder doch nur einen teil?
* umstieg auf eine datenbank in erwaegung ziehen
* nicht jedesmal das das csv file processen, sprich die berechnungsoutputs zwischenzuspeichern und dieses dann aufrufen
a) http://at.php.net/set_time_limit
b) je nach datenbank, gibt es verschiedene import-utilities; damit könnte man es direkt einlesen.
c) je nach verwendungszweck, kann es sinnvoller sein, zeile für zeile einzulesen, als die ganze datei auf einmal.
d) offenbar unterstützt php kein mmap()
Du hast immer noch nicht erklärt was du unter "aufhängen" verstehst.Zitat von Facetioushoffe ich habs verständlich dargelegt
mfg Facetious
naja
unter aufhängen versteh ich das ff im taskmanager 230.000 K Speicher braucht und sich nach 10 sekunden einfach selbst schließt
ff halt, was erwartest du.
für solche aufgaben gibts btw "massimporter", sowas macht man nie per webscript.
Btw, bei RAW performance duerftest du besser mit fgetcsv dran sein.
ich bezweifle trotzdem dass der Firefox was damit zu tun hat - ausser vielleicht du gibst das ganze auch an den Client aus
passt danke für die antworten
ich werd mich damit spieln und schaun ob ichs irgendwie zusammenbekomm
danke Facetious
achja, unter umständen bist du auch besser dran wenn du nicht mit file() gleich alles ladest, sondern mit fopen/fread zb. immer bis zum \n liest, kommt auf die länge der zeilen an: sehr lang -> fopen; kurz -> file
auf alle fälle verwendest am besten statt split explode, das sollte besser performen, da es keine Regulären Ausdrücke parsed.
overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025