Jump to content
php.lv forumi

DarkSide

Reģistrētie lietotāji
  • Posts

    92
  • Joined

  • Last visited

Posts posted by DarkSide

  1. Sveiki!

     

    Vai ir kādas idejas kādēļ lieli foreach cikli norij nenormāli daudz servera (Apache procesa) RAM atmiņas.

    Lietoju, Apache 1.3.x, PHP 4.x, Win2K.

     

    Skripts ir piemēram šāds:

    foreach($arrData['DEPARTMENTS'] as $did=>$dvalue) {
    foreach($dvalue['CONTRACTS'] as $cid=>$cvalue) {
    	foreach($cvalue['ORDERS'] as $oid=>$ovalue) {
    		echo "$did, $cid, $oid";
    	}
    }
    }

    Ideja tāda, ka man ir viens liels strukturēts masīvs $arrData, ko man ir jāparsē cauri un kautkas ar tiem datiem jāizdara (piemēram, jāizdrukā uz ekrāna). Ejot cauri šiem foreachiem Apache aprij ~200Mb RAM!! :-))) Ko tā? Reāli taču RAMu apēst nevajadzēja praktiski nemaz, jo katrā ciklu solī es papildus jau esošajam $arrData masīvam izveidoju principā tikai vienu mainīgo... lai gan piemēram $dvalue sanāk riktīgi liels... hmm... ok - padomāšu pats vēl par šo tēmu, bet

     

    anyway varbūt ir kādi noderīgi komentāri par foreach optimizāciju (uz PHP4).

  2. Gribēju vērsties pie Jums ar jautājumu.

    Vai kādam ir izdevies noģenerēt sakarīgu HTML (XHTML) vienā failā, ko Excelis māk ielasīt vairākos WorkSheets? Ideja tāda, ka man ir uztaisīts softs, kas atskaites ģenerē (ne ar PHP, bet Oracli, bet tas nav būtiski) uz HTML (XHTML) ar atbilstošo header un līdz ar to tās veras vaļā Excelī un viss rullē.

    Problēma ir tāda, ka nekādi nevaru izdomāt kādu HTMLu ģenerēt, lai atskaiti atverot Excelī būtu vairāki WorkSheets... No Exceļa puses tādu izveidojot un saglabājot tiek ģenerēti vairāki faili ar frameset un ??JavaScript, kas man nafig nav vajadzīgi... Vai to vispār var izdarīt ar viena HTMLa palīdzību?

    Kādas idejas?

  3. Nevajag gan. Vienu php vajag laist kā cgi, otru - kā apache moduli. Un trabliem nevajadzētu būt...
    A PHP kā CGI strādā labi? Cik esmu lasījis, tad itkā tas CGI variants esot toļi gļukains toļi liela bremze... Vai tad tā nav?
  4. PHP4 jāpamet kā sērgu. Iekš PHP5 ir Reflection API (iesaku versiju 5.1.3+). Ar to tad arī taisīt Factory veidīgos:
    Zinu jau ka būtu forši pāriet uz PHP5, bet ko lai dara, ka lielākā daļa projektu, kas man ir tikuši pasūtīti tika pasūtīti taisīt tieši PHP4... :(

     

    Tāpēc, ka php5 visus objektus piešķir/padod funkcijām pēc references. Taču php4 taisa vienmēr kopijas - pat vienkāršai $x = $y piešķiršanai. Kāpēc? Performances dēļ droši vien.

    Tas ir skaidrs - izlasīju precīzāk tagad. Sorry :)

    Un kāda jēga no šīm divām rindiņām?

    $d = new $classname;
    	$d = $this; // Ja rakstam $d=clone($this), tad viss ir ok, bet clone() darbojas tikai PHP5

    Pirmajā tu uztaisi jaunu objektu. Otrajā tu iepriekšējam objektam pa virsu uzraksti $this. Kāpēc tad bija jātaisa jauns objekts?

    Ups - patiešam - thanx ka norādīji uz nepilnību.
    Viss jau būtu forši, bet problēma ir tāda, ka ne vienu vien projektu esmu taisījis uz PHP4, kur samērā biezā slānī izmantoju līdzīgas konstrukcijas kā augstākesošajā koda gabaliņā. Doma bija neko daudz nepārkodējot pārcelt šos projektus uz PHP5. Cik saprotu tad vienīgais risinājums ir ze1-compatibility-mode norādīšana, bet tad atkal sūdīgi tas, ka tas attieksies uz visiem (arī nākotnē jau uz PHP5 veidotiem) projektiem :(

    Rezultātā sanāk tā, ka principā man sanāk uzturēt vecos projektus uz PHP4 anyway un jaunos jau taisīt uz PHP5, bet atkal probza - PHP4 un PHP5 cik lasīju īsti nemāk sadzīvot abi uz viena webservera... (vismaz Apache vajag 2 instances tad turēt)... Stulbi :(

    Kāda ir Jūsu pieredze ar PHP4 veidotu projektu pārcelšanu uz PHP5? Varbūt kādi ieteikumi?

  5. Sveiki!

    Skat. sekojošu koda gabaliņu. Principā visa problēma aprakstīta jau pašā kodā:

    <?php
    // Class definitions
    class c_parent {
    function c_parent() {/*not used*/}
    function do_parent() {
    	$classname = get_class($this);
    	echo 'Classname: '.$classname.'<br/>';	// output c_child (ok)
    	$d = new $classname;
    	$d = $this; // Ja rakstam $d=clone($this), tad viss ir ok, bet clone() darbojas tikai PHP5 :(
    	$d->attr=1;
    	return $d;
    }
    }
    class c_child extends c_parent {
    var $attr;
    function c_child() {$this->attr=0;}
    function do_child() {
    	echo 'before:'.$this->attr.'<br/>';		// output 0 (ok)
    	echo 'Calling do_parent():<br/>';
    	$d = $this->do_parent();
    	echo 'after:'.$this->attr.','.$d->attr.'<br/>'; // output 1,1 (why not 0,1 ?)
    }
    }
    
    // Main Program
    $entity = new c_child();
    echo 'Class attribute='.$entity->attr.'<br/>';	// output 0 (ok)
    echo 'Calling do_child():<br/>';
    $entity->do_child();
    echo 'Class attribute='.$entity->attr.'<br/>';	// output 1 (why?)
    ?>

    Problēma ir tur, ka clone() darbojas tikai PHP5, bet sākotnēji šāda veida klases izveidoju un ražošanā tās darbojas uz PHP4 vides. Pārejot uz PHP5 rodas problēmas a kodu mainīt nepavisam negribas. Vai ir kādi skaidrojumi, ieteikumi utt., kādēļ tā notiekas. Kāpēc PHP5 netaisa automātisku clone()?

    Vienvārdsakot interesē Jūsu pārdomas par tēmu...

  6. kaadas veertiibas es glabaaju tajaa Parent_ID kolonnaa?

    tjipa katrai apakshizveelei to Menu_ID zem kaa taa sanaaks? bet kaadaa veidaa tad es taas vareshu atspoguljot php?

    ParentID glabā tās menuID, kas atrodas tieši "virs" tekošās menu entītes. Rezultātā sanāks, ka DB tabulai ir relācija pašai uz sevi ParentID->MenuID.
  7. Hmm... Ir jau tās foršās JavaScript funkcijas setTimeout un setInterval ar kurām var pausi noorganizēt, BET cik webā palasīju, tad sanāk tā, ka tās pamatīgi noslogo klienta kompi, jo reāli JavaScript izpilde nepārtraucas. Tas ir gadījumos, kad piemēram nepieciešams, lai ik pa 5 sekundēm kautkas notiekas.

    Skat. piemēru:

    Pseidokods - mani interesē norealizēt šādu lietu ar java script:

    while(someCondition) {
    statement1;
    wait (someDelay);
    }

    JavaScript realizācija (laikam sanāk bezgalīgs cikls, kas ik pa 5 sekundēm izpilda statement1):

    setInterval('statement1',5000);

    Varbūt ir kādi ieteikumi kā labāk to norealizēt?

  8. Hmm... īstenībā viss ir pat vienkāršāk nekā sākumā likās :)

    Tik viena problēmiņa radās pašam veidojot ajax funkcijas - kā 'varētu noorganizēt tā, lai tos HTTP requestus glabātu kādā masīvā - tobiš, lai varu taisīt vairākus "vienlaicīgus" requestus un uz katru saņemt atbildi un JavaScript zinātu uz kuru requestu kura konkrētā servera atbilde attiecas... Nu tipa tāda kautkāda ideja... varbūt kāds var padalīties ar kādu koda gabaliņu - no piemēriem vieglāk mācīties (pat sliktiem piemēriem :)

  9. Nē, nu skaidrs ir viens - JavaScript pamati vismaz ir jāzin. :)

    Iečekoju xajax - izskatās jau labi. Galvenais bonuss, ka nav pašam JavaScript jākodē, bet visu to kodu, kas būs klienta galā var noģenerēt ar PHP no servera gala skripta. Tas ir labi, taču nedaudz zūd kontrole pār visu šo procesu...

    Vobšem sākšu kodēt pats savas JavaScript funkcijas, lai labāk visu to procesu izprastu un tad jau redzēs ko tālāk... :)

    Paldies Jums visiem - php.lv kā vienmēr rullē :) !

  10. slikti mekleeji. infa ir paarpaareem
    Da tur jau tā lieta, ka infa ir daudz, bet nesakārtota - katrs taisa to Ajaxi kā vēlas. Tieši tādēļ gribējās dabūt kādu tādu lielu labu grāmatu, ko izstudēt,lai pašam būtu pietiekoši labs priekšstats par to visu, lai pats varētu kādu labi Ajaxa freimworku uztaisīt...
  11. Ir radusies interese apgūt AJAX tehnoloģiju kā tādu. Cik meklēju internetā - informācijas ir daudz, bet tāda visaptveroša AJAX izklāsta (tipa tutorial vai dļa čaiņikov) neatradu. Tādēļ jautājums - vai kādam no Jums nav ieejama kāda e-grāmata par AJAX? Shī gada martā piemēram ir iznākusi "Ajax and PHP" - būtu interesanti. Meklēju pat dažādos hubos, bet šo vai līdzīgu e-grāmatu neatradu. Varbūt kāds var palīdzēt?

  12. viss ko vajag ir 3 funkcijas:

    1 - pievienojamies

    2 - pieprasijumi

    3 - pieprasijumi kuri atgriež vienu rindu ( var arī iztikt ar pirmajām 2 divām )

    neredzu jēgu taisīt veselu klasi priekš DB, ko tu tur vairāk liksi iekšā

    P.S. ar MySQL gan sen jau neesu strādājis, bet gadu atpakaļ pietika, ORACLE pilnībā pietiek ar šādu variantu

    Nu īstenībā var jau tai klasē iebāzt vēl šādas tādas derīgas lietas, piemēram, atribūtu - masīvs, kas saglabā visus objekta dzīves laikā izpildītos SQL teikumus debugošanai... vēl šo to var iebāzt, bet vai vajag tas ir jautājums. Pats šādu klasi uzcepu vienam projektam un nu jau pusgadu sekmīgi to lietoju, taču brīžiem māc šaubas vai tam bija liela jēga šai gadījumā. Protams, ir situācijas, kur klases PHP ļoti atvieglo programmētāja dzīvi. Pat u PHP 4.x var OOP izmantot tikai tas ļoti sux, OOP uz PHP 4.x ir iekodēts sūdīgi un strādā lēni un aprij nenormālu atmiņas daudzumu. Uz PHP 5.x OOP ir itkā realizēts daudzreiz labāk (PHP 5.x es gan neizmantoju, jo visu ko vjaag var uz PHP 4.x arī uztaisīt :)
  13. nav eleganti, bet paņem exceli, uztaisi raportu kādu gribi ar visu formatējumu un save as xml. tad pēti kādu xml šis uztaisīja (parasti murgainu :) ) pēc tad ar mēģini savu uzģenerēt.
    Laba ideja - pa brīvdienām pamēģināšu...
  14. ko a, pirm' reiz' dzird' par iX-eM-eL?
    Da zinu pietiekoshi labi KAS ir XML, bet jautājums bija domāts tā - ok, uztaisu XMLu, bet tālāk ko ar to darīt? Vai Excelis māk XML normāli ielasīt? Vai tai XMLā var iebāzt priekš Exceļa arī kautkādu cell formating (tipa merge cells, cell background color, font bold, italic, size utt)? Kāds būtu tas XMLa formāts priekš Exceļa? Tamlīdzīgas lietas mani interesē...
  15. varu tikai piebilst ka SELECT * FROM.. ir slikts stils..

    labaak SELECT lauks1,lauks2, ... laiks_n FROM...

    tas ir noraadiit preciizu lauku nosaukumus

    Kādēļ tas ir slikts stils? Manuprāt, labi un ienkārši viss. Vienīgais sliktums ir tad, ja tabulā ir 100 datu lauki, bet mums atlasīšanai interesē tikai kādi 2-3 no tiem. Tad gan vajadzētu SELECT lauks1,lauks2 FROM tabula, bet ja interesē praktiski visi datu lauki no tabulas, tad SELECT * FROM tabula ir labākais kas var būt - vienkārši un labi. Varbūt vari pastāstīt sīkāk, kas SELECT * ir slikts? Moška kautko nezinu...
  16. Izrakņāju šī foruma searchu un patiesi atradu principā tikai divus variantus (nelietojot visādus tur COM utt., kas nav platformneatkarīgi):

    1) PEAR (negribētos lietot, jo nezinu vai klientam, kas pasūtīja šo fišku vispār uz servera ir PEAR). Gribētos kautko neatkarīgu (kādu klasi vai ko tamlidzīgu) pielikt savam softam klāt.

    2) Izmantot content-type. Vispār ideja laba, bet jāpārbauda dzīvē, cik labi Excelis saprot tās HTML tabulas. Piemēram, tabulu formatēšana, šūnu merge utt...

  17. Sveiki!

     

    Vai kautkur neklejo riņķi kādas labas PHP klases ar kurām varētu ar PHP līdzekļiem veidot Excel failus (visādām atskaitēm no datubāzes utt...)? Baigi vajadzētu, lai pašam nav jāurbjās cauri visam Excel (XLS) failu formātam...

    Varbūt varat padalīties informācijā un pieredzē šādā situācijā.

     

    Imanc alias DarkSide

  18. Taa jau tas ir tikai kaa lai serveris zinaa ka samam userim doshu tos sesijas datus shamam nedoshu? SID tachu glabaajas usera galaa, vai tiek padots caur GET....
    Hmm... nestriideeshos - laikam jau bija gan ieksh php.ini kautkaads settings, kad SID tiek padots automaatiski liidz kaa GET. Vispaar jaapaskataas, nekad par to nebiju taa iipashi aizdomaajies :)
  19. Varu tikai pievienoties paareejiem. PHP ir riiks, kas izpildaas servera galaa. Liidz ar to sho var panaakt tikai kaadaa no sekojoshiem veidiem:

    1) Lietot frames vai iframes vai vairaakus logus, ko vizuaali var noformeet kaa vienu.

    2) Lietot JavaScript klienta galaa un style = display:none vai tamliidziigi. Respektiivi PHP sagatavo visu iespeejamo (pilnu) weblapu, no kuras redzama ir tikai dalja, un attieciigi sagatavo arii JavaScript, kas operee jau klienta daljaa un nodroshina to kas ir un kas nav redzams. Shis variants ir stipri leendarbiigaaks nekaa iepriesheejais.

    3) Veel ir variants, ka nevis paarlaadee tikai dalju, bet paarlaadee visu weblapu, ko var uztaisiit sameeraa smuki ar include vai require atbilstoshaas vietaas... Arii leenaaks nekaa frames, bet visdroshaakais veids.

  20. Sessijas izmantoshana viennoziimiigi ir droshaaka par visaadiem kookijiem un visu citu drazu. Vai lietot vertibas kas saglabatas sessijaas vai tomeer sessijaa saglabaat kautkaadu id (vai username) un katru reizi taisiit kaadu selectu no datubaazes ir striidiigs jautaajums. Slikti ir sessijaas tureet daudz info (noslogo webserveri), bet slikti ir arii, ja tev lapai ir liels apmekleejums un biezha staigaashana pa lapaam, tad uz katru lapas refresh taisiit selectu no datubaazes.

    Pashlaik vienaa projektaa ko taisu es censhos iipashi daudz sessijaas netureet (tikai id un lietotaaja autorizaacijas liimeni), bet saak izskatiities, ka tomeer ir slikti katraa lapaa laadeet visu nepiecieshamo info no datubaazes, jo nereti shiis lapas ir liidziigas - piemeeram tie pashi dati tikai citaa griezumaa (primitiivaakais - citaa seciibaa sakaartoti).

×
×
  • Create New...