Neviem ako spravit todle
-
weroro
Flash coder
- Príspevky: 3206
- Registrovaný: 14 feb 2009, 22:34
- Bydlisko: Bratislava
- Kontaktovať používateľa:
Re: Neviem ako spravit todle
Áno, ja som to ale napísal preto, lebo mam takú moju teóriu
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. 
Re: Neviem ako spravit todle
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 
-
weroro
Flash coder
- Príspevky: 3206
- Registrovaný: 14 feb 2009, 22:34
- Bydlisko: Bratislava
- Kontaktovať používateľa:
Re: Neviem ako spravit todle
A čo je podľa teba iný spôsob? Komprimácia?
Re: Neviem ako spravit todle
Narážal som skôr na to, že ak máš používať 10MB textový/binárny súbor, tak bude niečo asi zle 
(Ale to je na dlhú debatu no... jasné, chápem ťa)
(Ale to je na dlhú debatu no... jasné, chápem ťa)
-
weroro
Flash coder
- Príspevky: 3206
- Registrovaný: 14 feb 2009, 22:34
- Bydlisko: Bratislava
- Kontaktovať používateľa:
Re: Neviem ako spravit todle
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ť.
Re: Neviem ako spravit todle
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
- Príspevky: 25958
- Registrovaný: 09 sep 2005, 18:39
- Kontaktovať používateľa:
Re: Neviem ako spravit todle
http://www.joomlaperformance.com/articl ... _14_6.html
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
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-
weroro
Flash coder
- Príspevky: 3206
- Registrovaný: 14 feb 2009, 22:34
- Bydlisko: Bratislava
- Kontaktovať používateľa:
Re: Neviem ako spravit todle
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:
Už je to ale ok.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...
Re: Neviem ako spravit todle
sry ja som tupec pomilil som sa
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"]
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>';tak tam nech je http:// (tuto bude to co bude v subor.txt) /generator.php?ip='.$_GET["ip"].'&port='.$_GET["port"].'&bg='.$_GET["bg"]
Re: Neviem ako spravit todle
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
- Príspevky: 1269
- Registrovaný: 26 apr 2007, 16:05
Re: Neviem ako spravit todle
Ja uz z toho phpcka zacinam byt zufaly
a to som ho zacal hlbsie studovat len nedavno.
ci cele zle?
Vypisuje mi to parse eror v riadku kde je file_get_contents
Kód: Vybrať všetko
$subor=fopen("./txt/$nazov.txt,", "r");
$text=file_get_contents($subor);
echo "$text";
fclose($subor);
Vypisuje mi to parse eror v riadku kde je file_get_contents
-
audiotrack
VIP
- Príspevky: 25958
- Registrovaný: 09 sep 2005, 18:39
- Kontaktovať používateľa:
Re: Neviem ako spravit todle
ma tam ist cesta k suboru, nie handle co ti vrati fopen.