Sortiranje fajla

Sortiranje fajla

offline
  • igor86  Male
  • Stručni saradnik
    Web programiranje
  • Pridružio: 24 Maj 2006
  • Poruke: 1633

Naime, potrebno je da nadjem unique redove u jednom fajlu, koji ima 30 000 000 redova. Iz samog razloga sto sav sadrzaj ne moze da stane u memoriju, citaj niz, moram prvo izvrsiti sortiranje redova u drugi fajl. Kako najbrze?



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • PHP developer
  • Pridružio: 22 Mar 2006
  • Poruke: 3760
  • Gde živiš: 127.0.0.1

probaj ovo, ja nisam probao jer nemam sa cim, ali na php.net kazu da radi sa velikim fajlovima:

php.net - function fgets ::When working with VERY large files, php tends to fall over sideways and die.

Here is a neat way to pull chunks out of a file very fast and won't stop in mid line, but rater at end of last known line. It pulled a 30+ million line 900meg file through in ~ 24 seconds.

NOTE:
$buf just hold current chunk of data to work with. If you try "$buf .=" (note 'dot' in from of '=') to append $buff, script will come to grinding crawl around 100megs of data, so work with current data then move on!

<?php //File to be opened $file = "huge.file"; //Open file (DON'T USE a+ pointer will be wrong!) $fp = fopen($file, 'r'); //Read 16meg chunks $read = 16777216; //\n Marker $part = 0; while(!feof($fp)) {    $rbuf = fread($fp, $read);    for($i=$read;$i > 0 || $n == chr(10);$i--) {        $n=substr($rbuf, $i, 1);        if($n == chr(10))break;        //If we are at the end of the file, just grab the rest and stop loop        elseif(feof($fp)) {            $i = $read;            $buf = substr($rbuf, 0, $i+1);            break;        }    }    //This is the buffer we want to do stuff with, maybe thow to a function?    $buf = substr($rbuf, 0, $i+1);    //Point marker back to last \n point    $part = ftell($fp)-($read-($i+1));    fseek($fp, $part); } fclose($fp); ?>


Nadam se da ovo moze da ti pomogne Smile



offline
  • igor86  Male
  • Stručni saradnik
    Web programiranje
  • Pridružio: 24 Maj 2006
  • Poruke: 1633

Sumnjam, ali u svakom slucaju hvala

offline
  • Peca  Male
  • Glavni Administrator
  • Predrag Damnjanović
  • SysAdmin i programer
  • Pridružio: 17 Apr 2003
  • Poruke: 23211
  • Gde živiš: Niš

jedino da ubacis sve u sql tabelu, cija ce kolona koja sadrzi vrednosti biti index kolona...
sql ce to indexirati, pa onda radi order i select...where po volji...

offline
  • Pridružio: 01 Maj 2003
  • Poruke: 1300
  • Gde živiš: Kragujevac

@peca

to mi izgleda kao jedino resenje. sve ostalo ti je zeznuto i 'komplikovano'

offline
  • igor86  Male
  • Stručni saradnik
    Web programiranje
  • Pridružio: 24 Maj 2006
  • Poruke: 1633

Linux ima program sort, koji pozivam da sortiram fajl, na nivou linije, a poslije toga je jednostavno iz fajla izvuci unique. Tako da sam na taj nacin to sredio

Ko je trenutno na forumu
 

Ukupno su 2375 korisnika na forumu :: 131 registrovanih, 13 sakrivenih i 2231 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 6018 - dana 19 Dec 2025 13:41

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: Aco_GM, acov34, alke12, aramis s, Asparagus, babaroga, Bbbggg1979, Bo96, boj.an, Bojan198527, Boris BM, Car89, Cicumile, CraniumWhite, Crazzer, darcaud, dearg, debeli, Dejan_vw, Deki Duga Devetka, Demi87, desmeki, dexteroza, Djokkinen, Djole3621, djordjemiklusev, Djota1, Dogma21, doktor097, Dovla, Draganeli, draganl, drpera, Duh sa sekirom, Dusko Nikolin, flash12, Frunze, geo.dule, Georgius, Giskard, Glavni Oružni, Gogi_avio, Incognito, Ivan Campo, ivan_8282, Jaz, jeen yuhs, JK, K-1A, Kandrbandrdzilo, karakaj, Kazablankasrb, Kenanjoz, koom0001, Koser, kuntakinte, Lance Guest, lcc, Lelemood, leopard83, LUDI, luka35, lukisa, madza, MarkoW, mig21, mikrimaus, milanpb, mileta4, milimoj, Milo97, Milometer, mir juzni, Mićko, mkukoleca, mnn2, Natuzzi, nemkea71, Neutral-M, novator, Oscar, Osmatrač, Paraglajder, Pavel Medved, pavle_pzs, PedjaDikovic, ping15, PO1974, proka89, Robin, rovac, ruma, sajorg, Shajlok, Sharpshooter, Skakac7, Smiljkovich, Sonic, Srki94, stegonosa, Str2022, styg, suhoj27, Szigetwar, Tandrčak, Teodorasim, Topaz9, TRZH92, tuf, username_25, Vasilije Budović, Velički, Vica1958, vidra boy, VJ, vjetar, Vlad000, vlado_pg, VNVK, vrlenija, vuksa72, Yekaterinburg, YU-UKI, zeo, ziggy76, ZlatniRez, Zmaj Tolak, Zukov, ZZZ, |_MeD_|, Đurđevdan