Obsah fóra
PravidláRegistrovaťPrihlásenie




Odpovedať na tému [ Príspevkov: 59 ] Choď na stránku: predchádzajúca 1, 2
AutorSpráva
Offline

Užívateľ
Užívateľ
Ako optimalizovat vykon triedy

Registrovaný: 05.09.09
Príspevky: 1141
Témy: 127
Bydlisko: Lehota pod ...
Príspevok Napísal autor témyOffline : 28.08.2010 12:04

No dobre to som teda pochopil, aj keď ja by som to preskočil, lebo netvorím prehliadač, ani programovací jazyk.
Asi ma nakoniec prinútiš to akceptovať... ;)
Ale fakt by sa to nedalo urobiť po mojom??? :rolleyes:

V skratke:
Ja chcem spraviť búdu pre psa a ty mi rozprávaš o drevárskom priemysle. Ale to sa predsa dá urobiť s pílkou a kladivom...
Fakt nezľavíš zo svojho prístupu?


Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 29.10.08
Prihlásený: 30.07.12
Príspevky: 933
Témy: 2
Príspevok NapísalOffline : 28.08.2010 13:30

tu nejde o moj pristup, tu ide oto ze zadavatel ulohy to chce od teba riesenim pomocou tried :) keby neslo oto tak zbehlejsi koder by to urobil replacovanim pomocou regularneho vyrazu :)


Offline

Užívateľ
Užívateľ
Ako optimalizovat vykon triedy

Registrovaný: 09.09.07
Prihlásený: 07.11.16
Príspevky: 3114
Témy: 233
Bydlisko: Nové Zámky
Príspevok NapísalOffline : 28.08.2010 16:46

camo píše:
No veď to(viac rozmerné pole) je medzikrok, ktorý tam je úplne navyšše a okrem toho to generovanie viacrozmerného poľa určite bude vyzerať z pohľadu prehľadnosti kódu zversky. A v druhom kroku ho zase budeš prechádzať čo je druhý nadbytočný krok.

A ked budes chciet zmenit HTML vystup ?? Tak sa budes vrtat v kode, ktory rozoznava jednotlive leveli a tam budes hladat medzi regulernymi vyrazmi este aj HTML tagy a rozne to prepisovat hore dole...

Ked mas pole, krasne ho len prechadzas a jeho hodnoty obklopujes HTML tagmi..

Schvalne, si skus zmerat, kolko milisekund rozdielu tam bude a ci ti to stoji za to..







_________________
"It took a lot of work, but this latest Linux patch enables support for machines with 4096 CPUs, up from the old limit of 1024." "Do you have support for smooth full-screen flash video yet?" "No, but who uses that?"
- ak dlho neodpisujem do témy, zabudol som na ňu, takže ma upozornite SS, ak chcete moju odpoveď
Offline

Užívateľ
Užívateľ
Ako optimalizovat vykon triedy

Registrovaný: 05.09.09
Príspevky: 1141
Témy: 127
Bydlisko: Lehota pod ...
Príspevok Napísal autor témyOffline : 28.08.2010 19:48

No na localhoste sú rozdiely vo výkone zanedbateľné, ale čo na hostingu kde sú userov stovky? Tam to bude tiež také ružové?
Som sa v knihe dočítal, že práca s poľami a triedami nieje taká jednoduchá(pre server).


Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 29.10.08
Prihlásený: 30.07.12
Príspevky: 933
Témy: 2
Príspevok NapísalOffline : 28.08.2010 20:57

Camo, ty si niekde cital o inej verzi PHP pre server a inej pre desktop ?
v ktorej knihe si nieco take cital ?
ohladom skalovatelnosti, pre majitela webu je lacnejsie rozsirit vykon servera ako platit zbytocne hodiny developerom aby prekopavali a zliepali neprehladny a nemodularny soft.
kedysi som robil pre znameho z USA jeden softik v delphi, bol snim spokojny no po case sa ozval ze potrebuje nieco obdobne no pre iny HW ale ze ktomu HW uz maju aj activeX komponent. som mu povedal nech radsej zozenie viac info o HW a ze mu nakodim ten soft bez nutnosti pouzitia activx komponenty ktora ma plno funkcionalit ktore aj tak nevyuzijeme a iba zaberaju miesto v pamati. odpovedal mi "problem SW firiem na Slovensku a viacmenej v europe je vtom ze sa snazia setrit pamat, no pamat je lacnejsia ako praca programatora".

EDIT: apropo ked uz sa tu prebera vykon pri paralelnom pristupe viac uzivatelov. tu je cast tvojho kodu :
Kód:
$source=file('sourcedata.txt');


cize ak som dobre precital manual, tak prikaz file() nacita obsah suboru do pola!!! nebolo by supis, brutal rychlejsie otvorit si subor cez fopen a potom nacitavat jednotlive riadky pomocou fgets ? server by to urcite potesilo, hlavne keby to takto robilo niekolko procesov naraz a disk by sa mohol po... keby mal kazdemu davat data po jednom riadku(lepsie povedane po blokoch)


Offline

Užívateľ
Užívateľ
Ako optimalizovat vykon triedy

Registrovaný: 05.09.09
Príspevky: 1141
Témy: 127
Bydlisko: Lehota pod ...
Príspevok Napísal autor témyOffline : 30.08.2010 10:36

Kód:
prikaz file() nacita obsah suboru do pola!!!

No ale ten príkaz file() je predsa optimalizovaný práve na túto záležitosť. Ak to čo čítam chápem dobre, tak je rozdiel použiť zabudovaný príkaz a písať funkciu ktorá robí to isté.

Chceš povedať, že na bežnom hostingu je možné priplatiť si za rozšírenie pamäťe?


Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 29.10.08
Prihlásený: 30.07.12
Príspevky: 933
Témy: 2
Príspevok NapísalOffline : 30.08.2010 11:03

camo píše:
Kód:
prikaz file() nacita obsah suboru do pola!!!

No ale ten príkaz file() je predsa optimalizovaný práve na túto záležitosť. Ak to čo čítam chápem dobre, tak je rozdiel použiť zabudovaný príkaz a písať funkciu ktorá robí to isté.

netvrdim ze nieje optimalizovany, len hovorim ze tiez pouzivas pole na docasne ulozenie dat aj ked nieco take povazujes za neoptimalne. alebo to iba vtedy ak to tebe vyhovuje ?

camo píše:
Chceš povedať, že na bežnom hostingu je možné priplatiť si za rozšírenie pamäťe?
na beznom hostingu ? co je podla teba bezny hosting ? free webhosting? komercny webhosting? virtualserver hosting ? server housing ?


Offline

Užívateľ
Užívateľ
Ako optimalizovat vykon triedy

Registrovaný: 05.09.09
Príspevky: 1141
Témy: 127
Bydlisko: Lehota pod ...
Príspevok Napísal autor témyOffline : 30.08.2010 16:24

Citácia:
co je podla teba bezny hosting ? free webhosting? komercny webhosting? virtualserver hosting ? server housing ?

Komerčný hosting...
O tých ďalších som zatiaľ nechyroval...

Ale sa netvár, že si nepochopil, že tu nejde o používanie polí, ale o to, ako ich používaš. Bavili sme sa o písaní funkcií a o vstavaných fukciách.
Asi som sa zle vyjadril ohľadne tých polí a nemusíš ma hneď chytať za slovíčka.
Takže keď sa na to pozrieš z pohľadu toho komerčného hostingu toho čo tu bolo popísané, tak to vidíš ako? Môžem si dovoliť sa rozťahovať?
Čo hovoríš na toto: http://georgik.sinusgear.com/tag/php/


Offline

Užívateľ
Užívateľ
Ako optimalizovat vykon triedy

Registrovaný: 09.09.07
Prihlásený: 07.11.16
Príspevky: 3114
Témy: 233
Bydlisko: Nové Zámky
Príspevok NapísalOffline : 30.08.2010 16:49

camo píše:
Takže keď sa na to pozrieš z pohľadu toho komerčného hostingu toho čo tu bolo popísané, tak to vidíš ako? Môžem si dovoliť sa rozťahovať?
Čo hovoríš na toto: http://georgik.sinusgear.com/tag/php/

Prepac, ale ked uz ides robit mega-gigi super ultra aplikaciu, ktora bude mat niekolko tisic navstev za minutu, tak preco sa trepes do klasickeho komercneho zdielaneho hostingu ??? :roll:

A skusal si si uz konecne overit, kolko ta tvoja aplikacia zere ??







_________________
"It took a lot of work, but this latest Linux patch enables support for machines with 4096 CPUs, up from the old limit of 1024." "Do you have support for smooth full-screen flash video yet?" "No, but who uses that?"
- ak dlho neodpisujem do témy, zabudol som na ňu, takže ma upozornite SS, ak chcete moju odpoveď
Offline

Užívateľ
Užívateľ
Ako optimalizovat vykon triedy

Registrovaný: 05.09.09
Príspevky: 1141
Témy: 127
Bydlisko: Lehota pod ...
Príspevok Napísal autor témyOffline : 30.08.2010 17:24

Vy ste tu všetci ohromne múdri...
Len mi povedz o čom bol teda ten článok....
A či je normálne, že sa na to pýtam, keď sa dočítam takéto veci. Mne to príde normálne... Lebo proste to neviem posúdiť. Tak isto ako keď si sa ty pýtal, prečo sa ti tvoj floatovaný layout rozpadá...
Ten článok bol akože o ,,mega-gigi super ultra aplikacii,,???


Offline

Užívateľ
Užívateľ
Ako optimalizovat vykon triedy

Registrovaný: 09.09.07
Prihlásený: 07.11.16
Príspevky: 3114
Témy: 233
Bydlisko: Nové Zámky
Príspevok NapísalOffline : 30.08.2010 17:40

Jezisi maria ! Ja to myslim vazne, ze si otestuj pamatovu naracnost tej tvojej aplikacie ! A zistis sam, co je dobre a co nie..







_________________
"It took a lot of work, but this latest Linux patch enables support for machines with 4096 CPUs, up from the old limit of 1024." "Do you have support for smooth full-screen flash video yet?" "No, but who uses that?"
- ak dlho neodpisujem do témy, zabudol som na ňu, takže ma upozornite SS, ak chcete moju odpoveď
Offline

Užívateľ
Užívateľ
Ako optimalizovat vykon triedy

Registrovaný: 05.09.09
Príspevky: 1141
Témy: 127
Bydlisko: Lehota pod ...
Príspevok Napísal autor témyOffline : 30.08.2010 17:50

Myslím, že na to existuje nejaká funkcia ,ale netuším ktorá... :-)
A pokoj, pokoj čo budeš robiť, keď sa tu niekto opýta ako vycentrovať CSS menu??? ;)


Offline

Správca fóra
Správca fóra
Ako optimalizovat vykon triedy

Registrovaný: 27.07.07
Príspevky: 3948
Témy: 51
Bydlisko: Bratislava
Príspevok NapísalOffline : 30.08.2010 18:08

Mali by ste tu riesit optimalizaciu kodu tvojej triedy a nezachadzat bohvie kam. Takze camo, slubil si sem hodit upraveny kod triedy, ktory je podla teba viac optimalizovany, ale zatial tu nic nie je, a rozoberate tu nepodstatne veci, ktore s tvojou ulohou nemaju nic spolocne...

Bud sa tu bude riesit to, co sa ma, alebo sa to zamkne a bude pokoj...







_________________
NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE
Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 29.10.08
Prihlásený: 30.07.12
Príspevky: 933
Témy: 2
Príspevok NapísalOffline : 30.08.2010 18:40

stenley, toho noveho kodu sa asi nedockame. ani by som sa necudoval ked camo najprv hodi linku na stranku ktora pise ako si otestovat vyuzitie pamate http://georgik.sinusgear.com/tag/php/ a o par prispevkov neskor pise :
camo píše:
Myslím, že na to existuje nejaká funkcia ,ale netuším ktorá...


Offline

Užívateľ
Užívateľ
Ako optimalizovat vykon triedy

Registrovaný: 05.09.09
Príspevky: 1141
Témy: 127
Bydlisko: Lehota pod ...
Príspevok Napísal autor témyOffline : 30.08.2010 19:20

Prisahám, že to napíšem!!!
A to sa ti coldak podarilo. Mal som ten link totiž v záložkách, a už som nevedel, čo všetko sa tam píše....
Takže moja úloha znie optimalizovať výkon tej ohavnosti, čo som spáchal ;)

Toto môžete zmazať ak je to nežiadúce. A ospravedlňujem sa adminovi za opotrebovanie prstíkov, pri tom odstraňovaní.

Nabudúce už len kód(len to bude trochu trvať, lebo rozbieham projekt http://web.php5.sk ... :D )


Offline

Užívateľ
Užívateľ
Ako optimalizovat vykon triedy

Registrovaný: 09.09.07
Prihlásený: 07.11.16
Príspevky: 3114
Témy: 233
Bydlisko: Nové Zámky
Príspevok NapísalOffline : 31.08.2010 0:57

camo píše:
Myslím, že na to existuje nejaká funkcia ,ale netuším ktorá... :-)

Ty citas tie odkazy vobec, ktore sem davas ?
http://georgik.sinusgear.com/tag/php/

Kód:
Veď je to tak jednoduché zístiť, koľko vaša aplikácia spotrebuje pamäte:
echo memory_get_usage() . "\n";


atd..

Dalej si vies zmerat cas...

Zmerias cas na zaciatku dokumentu, potom tvojou triedou daj spracovat nieco v cykle, napriklad 100 krat za sebou a potom znova odmeraj cas a odcitaj ich..

Uvidis vysledok - rozdiel dvoch casov..

Potom nieco zmen v tej triede, napriklad file() a fopen() a zas to spusti.. Uvidis rozdiel..







_________________
"It took a lot of work, but this latest Linux patch enables support for machines with 4096 CPUs, up from the old limit of 1024." "Do you have support for smooth full-screen flash video yet?" "No, but who uses that?"
- ak dlho neodpisujem do témy, zabudol som na ňu, takže ma upozornite SS, ak chcete moju odpoveď
Offline

Užívateľ
Užívateľ
Ako optimalizovat vykon triedy

Registrovaný: 05.09.09
Príspevky: 1141
Témy: 127
Bydlisko: Lehota pod ...
Príspevok Napísal autor témyOffline : 31.08.2010 17:08

No tak som to zlátal. Je to o niečo lepšie? :-)
Kód:
<?php
class catalog
{

var $Gsource;
var $Glevel;

public function loadSource($param)
   {
     $this->Gsource=file($param);
   }

public function renderMenu()
   {
    $this->Glevel=0;
    foreach($this->Gsource as $item)
           {
            $item=trim($item);
            $this->renderItem($item);
           }
    $item='**END**';
    $this->renderItem($item);
   }

private function renderItem($item)
   {
    $lev=strspn($item,'-');
    if($lev > $this->Glevel)
      {
       echo "\n<ul>\n\t<li>$item";
       $this->Glevel=$lev;
      }
    else if($lev == $this->Glevel)
           {
            echo "</li>\n\t<li>$item";   //  level netreba nastovat lebo ==
           }
    else if($lev < $this->Glevel)
           {
            $levCk=$lev;    // $levCk - pre potreby tohoto cyklu
            do {                                // ukoncuje otvorene urovne
                echo "</li>\n</ul>\n</li>";
                $levCk++;
               }
            while($levCk < $this->Glevel);
            if($item!='**END**') echo "\n\t<li>$item";
            $this->Glevel=$lev;
           }
   }
}
?>


Offline

Správca fóra
Správca fóra
Ako optimalizovat vykon triedy

Registrovaný: 27.07.07
Príspevky: 3948
Témy: 51
Bydlisko: Bratislava
Príspevok NapísalOffline : 31.08.2010 18:04

no vidis, ze sa to da, oproti prvemu pokusu je to ovela prehladnejsie a s mensim objemom kodu, ale stale je tam co doladovat... inak, renderItem() ti zle uzatvara urovne, ak sa skoci napr. z tretej na prvu...







_________________
NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE
Offline

Užívateľ
Užívateľ
Ako optimalizovat vykon triedy

Registrovaný: 09.09.07
Prihlásený: 07.11.16
Príspevky: 3114
Témy: 233
Bydlisko: Nové Zámky
Príspevok NapísalOffline : 31.08.2010 18:14

No a hlavne tam pomlcky zostavaju :)







_________________
"It took a lot of work, but this latest Linux patch enables support for machines with 4096 CPUs, up from the old limit of 1024." "Do you have support for smooth full-screen flash video yet?" "No, but who uses that?"
- ak dlho neodpisujem do témy, zabudol som na ňu, takže ma upozornite SS, ak chcete moju odpoveď
Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 29.10.08
Prihlásený: 30.07.12
Príspevky: 933
Témy: 2
Príspevok NapísalOffline : 31.08.2010 19:14

a naco je tam trim?
Kód:
$item=trim($item);


Offline

Užívateľ
Užívateľ
Ako optimalizovat vykon triedy

Registrovaný: 05.09.09
Príspevky: 1141
Témy: 127
Bydlisko: Lehota pod ...
Príspevok Napísal autor témyOffline : 31.08.2010 19:49

Stenley:
S tým uzatváraním úrovní som sa teda dobre potrápil. Ale u mňa, keď som si dal na <ul> border tak bolo všetko OK. Tak som trochu zmetený...
A čo by sa tam malo ešte doladiť?

Coldak:
Chcel som, aby ten kód nejako vyzeral aj v prehliadačoch, a aj keď sa to nezdá, môže to byť ešte horšie...

Blackshadow:
Tentokrát to bol úmysel, lebo sa to tak lepšie číta a kontroluje...


Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 29.10.08
Prihlásený: 30.07.12
Príspevky: 933
Témy: 2
Príspevok NapísalOffline : 31.08.2010 21:14

camo píše:
Stenley:
S tým uzatváraním úrovní som sa teda dobre potrápil. Ale u mňa, keď som si dal na <ul> border tak bolo všetko OK. Tak som trochu zmetený...
A čo by sa tam malo ešte doladiť?

toto je vysledny html kod. si si isty ze je kosher ?
Kód:
<ul>
   <li>-TV, audio, video
<ul>
   <li>--LCD televízory
<ul>
   <li>---JVC</li>
   <li>---LG</li>
</ul>
</li>
   <li>--LED televízory</li>
   <li>--Prehrávače
<ul>
   <li>---Bluray prehrávače</li>
   <li>---DVD prehrávače</li>
</ul>
</li></li>
</ul>
</li>
   <li>-Veľké spotrebiče
<ul>
   <li>--Práčky</li>
   <li>--Sušičky</li>
   <li>--Chladničky
<ul>
   <li>---voľne stojace</li>
   <li>---vstavané</li>
</ul>
</li>
   <li>--Sporáky</li>
</ul>
</li></li>
</ul>
</li>


camo píše:
Coldak:
Chcel som, aby ten kód nejako vyzeral aj v prehliadačoch, a aj keď sa to nezdá, môže to byť ešte horšie...

chcel si odstranit znak "\n" z nacitaneho obsahu?
precital si si poriadne syntax prikazu "file" ?
http://sk.php.net/manual/en/function.file.php
naco asi tak sluzi flag "FILE_IGNORE_NEW_LINES"? manual tvrdi : "Do not add newline at the end of each array element"


Offline

Správca fóra
Správca fóra
Ako optimalizovat vykon triedy

Registrovaný: 27.07.07
Príspevky: 3948
Témy: 51
Bydlisko: Bratislava
Príspevok NapísalOffline : 31.08.2010 22:55

camo píše:
Stenley:
S tým uzatváraním úrovní som sa teda dobre potrápil. Ale u mňa, keď som si dal na <ul> border tak bolo všetko OK. Tak som trochu zmetený...
A čo by sa tam malo ešte doladiť?

Zjednodusit kod a odstranit problemy so spravnym uzatvaranim urovni by si velmi jednoducho mohol vyriesit pomocou rekurzivnej metody...







_________________
NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE
Offline

Užívateľ
Užívateľ
Ako optimalizovat vykon triedy

Registrovaný: 05.09.09
Príspevky: 1141
Témy: 127
Bydlisko: Lehota pod ...
Príspevok Napísal autor témyOffline : 31.08.2010 23:33

stenley:
No jó no rekurzia....
... je keď fcia volá sama seba... chcel som to tak urobiť, ale nevedel som ako.... Ak by si fakt nemal čo robiť tak a bol by si tak šľachetný a udatný :D , tak by som to rád videl, lebo si to neviem predstaviť. Pošlem 1kg čokolády podľa vlastného výberu, lebo by som sa to potreboval naučiť...

coldak:
Ty si sa zrejme ani nenarodil, teba rodičia kúpili v obchode s počítačmi nie??? ;)

Mám doma jeden taký script na výpis adresára, kde mám rekurziu, ale na to menu som to nevedel namontovať:

Kód:
<ul>
<?php
$what=".";
adresar($what);

function adresar($what)
                {
                 $blacklistADR=array('..','.');
                 $open=opendir($what."/");
                 while($item=readdir($open))
                                    {
                                     if(is_dir($item) and in_array($item,$blacklistADR)) continue;
                                     if(is_dir($item))
                                       {
                                        echo "<li><span class=\"red\">$item /adresar/</span><ul>\n";
                                        echo adresar($what."/".$item);
                                       }
                                     else echo "<li><a href=\"".$what."/".$item."\">$item</a></li>\n";
                                    }
                  echo "</ul>";
                 }
?>
</ul>


Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 29.10.08
Prihlásený: 30.07.12
Príspevky: 933
Témy: 2
Príspevok NapísalOffline : 31.08.2010 23:50

camo: nemohli ma kupit, lebo ja som na nezaplatenie, ale obcas som na zaplakanie :)
aby si nepovedal, ze som nebodaj z utulku(cize pes), tak som si dal trochu namahy a par hodin som studoval PHP aby som ti mohol poslat nejaky example.
Kód:
<?php
  interface ICatalog {
     public function load($conf);
     public function render();
  }
 
  class TCatalog implements ICatalog {
     private $data=array();
     private $stack = array();
     
    static public function cast(TCatalog $object) {
        return $object;
    }
   
     private function getLevel($txt) {
        return strspn($txt,"-");
     }
     
     private function addNode($sublevel,$line) {
        $subarr = array($line);
        $this->stack[$sublevel]= &$subarr;
        array_push($this->data,&$subarr);
     }

    private function addSubNode($sublevel,$line) {
        $subarr = array($line);
        $this->stack[$sublevel]= &$subarr;
        array_push($this->stack[$sublevel-1],&$subarr);
     }
     
     public function load($conf){
        $level=1;
        $handle = fopen($conf, "r");
         while (!feof($handle)) {
           $line = &fgets($handle);
           $sublevel = $this->getLevel($line);
           $line = trim(ltrim($line,"-"));
           if ($level==$sublevel) {
              $this->addNode($sublevel,$line);
           }
           if ($level<$sublevel) {
              $this->addSubNode($sublevel,$line);
           }
         }
        fclose($handle);
     }
     
     protected function prn($arr,$level) {
        $cnt = &count($arr);
        $level++;
        echo str_repeat("  ", $level)."<UL>\n";
        for ($i=1;$i<$cnt;$i++) {
           echo str_repeat("   ", $level)."<LI>".$arr[$i][0]."</LI>\n";
           if (count(&$arr[$i])>1) {
              $this->prn(&$arr[$i],$level);
           }
        }
        echo str_repeat("  ", $level)."</UL>\n";
     }
     
     public function render(){
        $this->prn($this->data,0);
     }
  }
 
  $catalog = new TCatalog();
  $catalog->load("menu.txt");
  echo "<html>\n<body>\n";
  $catalog->render();
  echo "</body>\n</html>\n";
  echo memory_get_peak_usage();
?>

kedze v PHP mam asi dvojdnove skusenosti tak budem rad ak mi manici v PHP napisu co by sa dalo urobit lepsie. dik


Offline

Správca fóra
Správca fóra
Ako optimalizovat vykon triedy

Registrovaný: 27.07.07
Príspevky: 3948
Témy: 51
Bydlisko: Bratislava
Príspevok NapísalOffline : 01.09.2010 10:24

camo píše:
stenley:
No jó no rekurzia....
... je keď fcia volá sama seba... chcel som to tak urobiť, ale nevedel som ako.... Ak by si fakt nemal čo robiť tak a bol by si tak šľachetný a udatný :D , tak by som to rád videl, lebo si to neviem predstaviť. Pošlem 1kg čokolády podľa vlastného výberu, lebo by som sa to potreboval naučiť...


tu mas rekurzivnu metodu, co som napisal pred par dnami, ktora ti korektne vygeneruje cely zoznam.

Mensi popis: $content vzdy obsahuje pole poloziek jednej urovne v danej vetve (napr. TV, audio, video a Veľké spotrebiče). V cykle sa postupne cez ne prechadza a kontroluje, ci dana polozka obsahuje dalsi vnoreny zoznam. Ak ano (to je ta podmienka if), metoda zavola samu seba s tym, ze ako svoj parameter uvedie pole poloziek vnoreneho zoznamu najvyssej urovne. Jednoduche, nie? :)
Kód:
private function _genMenu($content)
{
   if(empty($content)) {
      return;   
   }
   
   echo '<ul>';
   foreach($content as $key => $value) {
      $level = $this->_getLevel($key);
         
      echo '<li>'.substr(trim($value), $level);
         
      if($this->_hasChild($key, $level)) {
         $this->_genMenu($this->_getChildren($key, $level));   
      }
         
      echo '</li>';
   }
   echo '</ul>';
}


PS: cokoladu mi posielat nemusis :)

>coldak: tvoj kod u mna vygeneruje len druhu polovicu stromu a hlasi zopar chyb s referenciami.







_________________
NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE
Offline

Užívateľ
Užívateľ
Ako optimalizovat vykon triedy

Registrovaný: 05.09.09
Príspevky: 1141
Témy: 127
Bydlisko: Lehota pod ...
Príspevok Napísal autor témyOffline : 01.09.2010 11:05

Díky moc, ten zvyšok okolo toho skúsim domyslieť sám, to hádam zvládnem.... :rolleyes:

PS: Nieje tá coldakova metóda s použitím fopen problematická?! Myslím na súperenie dvoch stránok o prístup k súboru. Tak som to nejako čítal v knihe, ale v manuály som nič také nevidel....


Naposledy upravil camo dňa 01.09.2010 11:21, celkovo upravené 1

Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 29.10.08
Prihlásený: 30.07.12
Príspevky: 933
Témy: 2
Príspevok NapísalOffline : 01.09.2010 11:06

stenley sorac, este na poslednu chvilku som robil nejake pokusy a vymazal som inicializacny prvok pola takze spravne by malo byt
Kód:
class TCatalog implements ICatalog {
     private $data=array("root");
     private $stack = array();

edit: ako nastavim php aby mi hlasilo aj chyby referencii ?

edit2: uz som si to nastavil, tie warnings su otom ze cez referenciu na objekt si ho modifikujem, ale to je zamer.


Offline

Správca fóra
Správca fóra
Ako optimalizovat vykon triedy

Registrovaný: 27.07.07
Príspevky: 3948
Témy: 51
Bydlisko: Bratislava
Príspevok NapísalOffline : 01.09.2010 11:59

>camo: zvysok je uz malina, najvacsi "problem" je prave to generovanie spravneho vnorenia zoznamov... kedze len citas zo suboru a nijak ho nemodifikujes, tak by nemal byt problem s pristupom k jeho obsahu...

>coldak: je to deprecated, takze by som to uz radsej nepouzival, aj ked sa to da zmenit v php.ini...







_________________
NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE
Odpovedať na tému [ Príspevkov: 59 ] Choď na stránku: predchádzajúca 1, 2


Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy. Ako optimalizovať pre IE6 keď ho nemám?

v Ostatné

4

577

09.09.2008 17:59

shaggy Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Triedy a sub triedy

v PHP, ASP

5

534

19.04.2010 19:50

emer Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. CCleaner - Optimalizovať databázu

v Ostatné programy

3

550

03.09.2011 22:42

Hanoj Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Ako zvýšit výkon notebooku

v Operačné systémy Microsoft

1

526

31.12.2012 10:16

shiro Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Ako nastaviť HD7470M na výkon

v ATI/AMD grafické karty

1

267

13.02.2013 22:53

carl65 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. ako zvýšiť výkon grafickej karty?

v nVidia grafické karty

13

1170

29.12.2013 11:33

Phanteom Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. ako zvysit vykon Asus N7600GS silent???

v nVidia grafické karty

21

1935

03.06.2009 13:27

McDog Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. AKO ZVYSIT VYKON ASUS EN8800GTS 640MB

v nVidia grafické karty

23

1095

29.11.2007 16:31

mimkork Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Ako sa meria vykon grafickych kariet?

v ATI/AMD grafické karty

5

636

18.07.2009 9:09

Spirit Zobrazenie posledných príspevkov

Táto téma je zamknutá, nemôžete posielať nové príspevky alebo odpovedať na staršie. GT9800 1GB rovnaky vykon ako 2x gtx275?:)

v nVidia grafické karty

1

523

17.12.2009 0:25

eXistenZ Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. ako zlepsit vykon a dosah wifi siete

v Siete

2

838

11.12.2014 11:56

janopalo Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Ako zvýšiť výkon PC aby šiel AERO

v Operačné systémy Microsoft

24

4068

17.03.2008 17:30

Romi Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Ako mozem zvatsit vykon grafickej karty Z pamete RAM

v Notebooky a netbooky

3

594

23.12.2008 20:06

Triminka Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Notebook 15,6 do 500e, skôr kvalita ako výkon

v Notebooky a netbooky

6

630

10.10.2011 12:10

jbakos Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Forko triedy

v Redakčné systémy

7

727

05.05.2009 21:04

Svolo Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Siete triedy B

v Sieťové a internetové programy

1

291

28.01.2013 19:30

majky358 Zobrazenie posledných príspevkov


Nemôžete zakladať nové témy v tomto fóre
Nemôžete odpovedať na témy v tomto fóre
Nemôžete upravovať svoje príspevky v tomto fóre
Nemôžete mazať svoje príspevky v tomto fóre

Skočiť na:  

Powered by phpBB Jarvis © 2005 - 2024 PCforum, webhosting by WebSupport, secured by GeoTrust, edited by JanoF
Ako väčšina webových stránok aj my používame cookies. Zotrvaním na webovej stránke súhlasíte, že ich môžeme používať.
Všeobecné podmienky, spracovanie osobných údajov a pravidlá fóra