Neviem ako spravit todle

Programovacie jazyky, rady, poradňa...
weroro
Flash coder
Flash coder
Používateľov profilový obrázok
Príspevky: 3206
Registrovaný: 14 feb 2009, 22:34
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: Neviem ako spravit todle

Príspevok od používateľa weroro »

Áno, ja som to ale napísal preto, lebo mam takú moju teóriu :D Ak otvorím súbor, ktorý má 10MB, naplním jeho obsahom premennú a potom, ako píšeš ty, z obsahu premennej vypíšem iba 1000 znakov, šlo by to, ale to je podľa mňa zbytočná záťaž pre server. Načo budem načítavať do premennej (prakticky do pamäte servera) 10MB dát? keď môžem tým, že uvediem priamo vo funkcii, že chcem načítať iba 1000 (znakov alebo bajtov to je asi jedno). tým sa do pamäte servera nahodí iba 1KB dát. A ešte keď si predstavíš, že by ten súbor otvorilo 200-300ludí naraz. Naozaj je to len moja teória ničím nepodložená, dokonca ani poriadne neviem ako to v PHP funguje.. ale aspoň sa snažím dáko si uvedomovať aj to ako by som prípadnú aplikáciu riešil tak, aby čo najmenej zaťažila server. :)
BX
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4572
Registrovaný: 10 jan 2008, 15:30

Re: Neviem ako spravit todle

Príspevok od používateľa BX »

Mal by si začať tým, že by si pozmenil logiku a snažil sa odstrániť/zredukovať ten 10MB súbor buď na viac súborov, alebo to riešiť iným spôsobom :P
weroro
Flash coder
Flash coder
Používateľov profilový obrázok
Príspevky: 3206
Registrovaný: 14 feb 2009, 22:34
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: Neviem ako spravit todle

Príspevok od používateľa weroro »

A čo je podľa teba iný spôsob? Komprimácia?
BX
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4572
Registrovaný: 10 jan 2008, 15:30

Re: Neviem ako spravit todle

Príspevok od používateľa BX »

Narážal som skôr na to, že ak máš používať 10MB textový/binárny súbor, tak bude niečo asi zle :D
(Ale to je na dlhú debatu no... jasné, chápem ťa)
weroro
Flash coder
Flash coder
Používateľov profilový obrázok
Príspevky: 3206
Registrovaný: 14 feb 2009, 22:34
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: Neviem ako spravit todle

Príspevok od používateľa weroro »

Ja sa nedoťahujem :) len sa pýtam na možné riešenie tohto problému. Povedzme, že by som mal primitívnu databázu, txt súbor, v ktorom sú nick, čas, správa medzi sebou oddelene || a príspevky celkovo oddelené ::: (guestbook) a chcem znej vypisovať iba posledných 20správ. nebudem predsa kvôli tomu načítavať celú databázu ale zároveň chcem mať k dispozícii aj celu históriu toho "chatu". Osobne používam ten spôsob stým načítaním cca 1000 bajtov súboru, ten obsah parsujem cez split a potom to dávam vypísať cez cyklus. Preto ma zaujala ta iná alternatíva (samozrejme bez použitia sql a podobných databázových vecí). Ale vďaka aspoň mám nad čím premýšľať.
juho
Star
Star
Používateľov profilový obrázok
Príspevky: 551
Registrovaný: 11 máj 2007, 21:16

Re: Neviem ako spravit todle

Príspevok od používateľa juho »

nemyslis si ze ta funkcia fgc by mohla vyzerat takto?

Kód: Vybrať všetko

function file_get_contents($fname,$from=0,$count=filesize($fname)-1)
{
$handle = fopen($fname, "r");
fpos($handle,$from);
$contents = fread($handle,$count-$from);
fclose($handle);
return $contents;
}
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: Neviem ako spravit todle

Príspevok od používateľa audiotrack »

http://www.joomlaperformance.com/articl ... _14_6.html

Kód: Vybrať všetko

        fread() (seconds)       file_get_contents() (seconds)
Mean    0.03674                 0.01322
Min     0.030710935592651       0.0098111629486084
Max     0.04555082321167        0.016166925430298
file_get_content je 3x rýchlejšie než to vaše šibrikovanie s fread-om, takže nie, určite tak tá funkcia vyzerať nemôže. Fungovať by fungovala vpodstate rovnako, ale nič by sa tým nezískalo
weroro
Flash coder
Flash coder
Používateľov profilový obrázok
Príspevky: 3206
Registrovaný: 14 feb 2009, 22:34
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: Neviem ako spravit todle

Príspevok od používateľa weroro »

Audiotrack to som si všimol aj ja keď som pozeral na http://php.net/manual/en/function.file-get-contents.php, tam je tiež porovnanie. Ale diskusiu som vlastne začal kvôli tomu BXovmu príspevku kde napísal:
BX napísal:A ak chceš vypísať časť súboru tak $text = file_get_contents($subor) a so stringom už pracovať vieme, že?
Ak náhodou neviem o funkcií, hľadám iné možnosti...

// Aj keď áno viem, že pri veľkých súboroch by to bol problém...
Už je to ale ok.
eror
Medium Star
Medium Star
Príspevky: 457
Registrovaný: 16 nov 2008, 14:19
Bydlisko: GA

Re: Neviem ako spravit todle

Príspevok od používateľa eror »

sry ja som tupec pomilil som sa

Kód: Vybrať všetko

$obraz = 'httpenerator.php?ip='.$_GET["ip"].'&port='.$_GET["port"].'&bg='.$_GET["bg"];
   $href = '<a href="http://enees.cz/"><img src="'.$obraz.'"></a>';
   echo '<img src="'.$obraz.'"></br>';
   echo '<textarea rows="2" cols="50">'.$href.'</textarea>';
tam kde je enees.cz nech aj je enees.cz som hnup ale tam kde je to httpenerator
tak tam nech je http:// (tuto bude to co bude v subor.txt) /generator.php?ip='.$_GET["ip"].'&port='.$_GET["port"].'&bg='.$_GET["bg"]
BX
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4572
Registrovaný: 10 jan 2008, 15:30

Re: Neviem ako spravit todle

Príspevok od používateľa BX »

To na veci nič nemení. Funkciu file_get_contents proste použiješ tam, kde chceš mať text zo súboru. Ber to ako premennú a dosaď si ju do kódu...

Kód: Vybrať všetko

echo "TotoJeNaStrankeATerazZoSuboru".file_get_contents("subor.txt")."APokracujemDalej";
aughostino
Medium Professional
Medium Professional
Používateľov profilový obrázok
Príspevky: 1269
Registrovaný: 26 apr 2007, 16:05

Re: Neviem ako spravit todle

Príspevok od používateľa aughostino »

Ja uz z toho phpcka zacinam byt zufaly :-D a to som ho zacal hlbsie studovat len nedavno.

Kód: Vybrať všetko

$subor=fopen("./txt/$nazov.txt,", "r");
$text=file_get_contents($subor);
echo "$text";
fclose($subor);
ci cele zle? :oops:
Vypisuje mi to parse eror v riadku kde je file_get_contents
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: Neviem ako spravit todle

Príspevok od používateľa audiotrack »

ma tam ist cesta k suboru, nie handle co ti vrati fopen.
Napísať odpoveď