[ Zoran Rašković @ 12.04.2002. 22:43 ] @
Cao svima

Imam jednu dilemu... Naime, pravio sam onaj txtForum bas dosta, pa sam napravio i forume sada, pa i registraciju usera, ali sam sada u dilemi... Da li je moguce napraviti neki tako veliki forum sistem koji sve radi sa txt fajlovima. Jer, sta se desava ako ima 100 korisnika koji u isto vreme hoce da upisu nesto u txt fajl. Bez obzira sto koristim flock(), hteo sam da pitam iskusne developere ovo.

Znaci, da li vredi da nastavim i da napravim da radi sa txt fajlovima ovo, sto je u stvari i bio moj prvobitni cilj, jer znamo da vec postoji pregrst foruma koji rade sa mysql bazom.

Takodje, ima li kojih security-related stvari koje treba napomenuti u radu sa txt fajlovima?

Pozrav

Zoki
[ Divine @ 13.04.2002. 01:45 ] @
Pazi txtForum koji si uradio je genijalan. Sta vise taj forumcic (koji namjeravam ta preradim, ne zamijeras?) je toliko praktican za ljude koji nemaju bazu na sajtu. Ali svaka alternativa ima mane, konkretno, brzina.
Bolje ga ostavi, ili doradi. Jednostavnost je vrlina po meni...
[ RAZZLEDAZZLER @ 13.04.2002. 02:18 ] @
Evo ja malo samo da proshirim ovo Dredovo pitanje u vezi flocka ako neko zna.

Kada se koristi flock ... kada neko upisuje [znachi zakljucha se fajl], shta se deshava sa drugim korisnikom koji pokushava u isto vreme da upisuje? Jel je izvrshavanje fajla privremeno pauzirano tom drugo korisniku dok ovaj prvi ne zavrshi? Koliko ta pauza traje ? [jel to ono max_execution_time ?] Shta se desi ako se ne izvrshi scripta za to vreme? Kakva greshka se ispisuje ako se uopshte ispisuje? ... nishta od ovoga ne mogu da proverim jer normalno nemam 100tinak kompova, ruku i glava ...pa rekoh mozda neko zna bar teoretski

Nemojte zbog ovog pitanja da skrecete sa Dredove teme, gledajte na ovo kao na proshirenje njegovog pitanja
[ alex @ 13.04.2002. 02:32 ] @
Citat:
Judge Dred:
Da li je moguce napraviti neki tako veliki forum sistem koji sve radi sa txt fajlovima.


Najbolje resenje je da se svaka poruka smesta u zasebni fajl, dok u glavnom fajlu imas reference ka tim porukama.

Tako radi ZDiscussions za Zope ;)

Poz, alex.
[ Zoran Rašković @ 13.04.2002. 03:21 ] @
Da, drago mi je da ste se nasli da odgovorite......

Naime, ovo sto je alex predlozio, tako sam i poceo vec da prepravljam forum. Znaci za svaki forum postoji poseban dir. Unutar tog dira, se za svaki post napravi fajl koji nosi naziv id.txt, pr za post koji ima id=3 , taj fajl bi bio 3.txt i tako dalje. Takodje, unutar tog dira se nalazi i jedan fajl koji sam nazvao headers.txt u kome se smestaju samo teme, tj. poruke sa pid=0. Tako da kada treba da se izlista forum onda se samo iscitaju linije iz tog fajla, iparsuju se i to se sve lepo isformatira.

Takodje, kada se napravi nova tema, onda se pravi i fajl sa nazivom npr 5-replies.txt u kome se na svakoj liniji smestaju id brojevi od poruka koje predstavljaju odgovore na 5.txt poruku. I tako dalje i tako dalje :)

Inache, dosta sam preradio forum, i graficki isto, tako da se nadam da ce se svideti ljudima kada izadje sledeca verzija.

btw. Divine, naravno da mozes da prepravljas kod, ja sam izdao tajforum pod GPL-om , tako da... slbodono. Samo mi baci poruku kad to uradis, sta si i gde prepravio :)
[ bOkIcA @ 13.04.2002. 22:15 ] @

Sto ne pokusas da malo duzom petljom zadrzis jedan fajl zakljucan, a iz drugog browsera (prozora) pokusas normalnu-standardnu operaciju na istom txt-u.

Sigraj se malo pa napisi rezultate testa.
[ RAZZLEDAZZLER @ 14.04.2002. 02:20 ] @
evo ja testirao

Koliko sam ja video, ovde niko ne jebe zivu silu.
Stavio ja da se sa flock zakljuca fajl i stavio onda sleep(120) ... za to vreme pokrenuo drugi php da upisuje u taj "zakljuchani" fajl, .. on bez problema upisao

Bolje da nisam testirao, tek mi sada nishta nije jasno

Ajde neko iskusan da pomaze, da ne poludim
[ Zoran Rašković @ 14.04.2002. 02:46 ] @
ni ja isto ne znam.....ja sam promenio princip na kome radi txtForum.

Sada za svaki thread se pravi novi txt fajl tako da ne postoji mogucnost da budu 2 upisa u isti fajl u isto vreme.
[ Divine @ 15.04.2002. 15:34 ] @
Citat:
flock() will not work on NFS and many other networked file systems. Check your operating system documentation for more details.

On some operating systems flock() is implemented at the process level. When using a multithreaded server API like ISAPI you may not be able to rely on flock() to protect files against other PHP scripts running in parallel threads of the same server instance!


*** from php manual :)
takodje:
Citat:

Note: Because flock() requires a file pointer, you may have to use a special lock file to protect access to a file that you intend to truncate by opening it in write mode (with a "w" or "w+" argument to fopen()).
[ RAZZLEDAZZLER @ 15.04.2002. 20:21 ] @
pa i otvorio sam fajl sa w tj w+
I kada smo vec kod citiranja manuala...
Citat:

flock() allows you to perform a simple reader/writer model which can be used on virtually every platform (including most Unix derivatives and even Windows).


... a ja probao i na linuxu i na windowsu, isti rezultati kao shto sam rekao