Contacte

Pantofi precis PHP PHP. PHP profilare cu Xhprof. Puteți spune cu încredere că ați eșuat

Loopul de date profil este cel mai complex din toate buclele personalizate de buddypress. Este de fapt două bucăți într-una, primul este de a bucura prin grupuri de câmpuri de profil, iar al doilea pentru a bucla prin câmpuri de profil în acel profil de câmp.

Buclă standard.

Acest utilizator nu are un profil.

Parametrii acceptați.

Funcția BP_GROUP_HAS_PROFILE () va accepta un număr de parametri care vor manipula datele returnate.

  • profil_group_id opțional

    Implicit toate grupurile și toate câmpurile vor fi afișate. Dacă furnizați ID-ul unui grup de câmpuri de profil, atunci vor fi afișate numai câmpurile din acest grup.

    • Valoarea implicită: falsă
  • user_id opțional

    ID-ul utilizatorului pe care doriți să îl aduceți datele profilului. Acest lucru este necesar dacă sunteți în afara unui URL al unui profil de profil (/ membri / Andy / ...), altfel este ID-ul utilizatorului afișat.

    • Valoare implicită: bp_displayed_user_id ()
  • membru_type Opțional

    Limitează câmpurile de către cele restrânse la un anumit tip de membru sau o serie de tipuri de membri. Dacă este furnizat $ user_ID, valoarea lui $ member_type va fi suprascrisă de tipurile de membru al utilizatorului furnizat. Valoarea specială a "oricărui" va returna numai acele domenii care sunt nerestricționate de tipul de membru - adică cele aplicabile oricărui tip.

    • Valoarea implicită: falsă
  • hide_empty_groups opțional

    În mod implicit, grupurile goale nu vor fi afișate. Dacă furnizați valoarea 0, atunci toate grupurile vor fi afișate.

    • Valoarea implicită: Adevărat
  • hide_empty_fields opțional

    În mod implicit, afișați numai câmpurile goale dacă suntem pe tabloul de bord sau suntem pe pagina de editare a profilului utilizatorului sau aceasta este o pagină de înregistrare. Dacă furnizați valoarea 0, atunci toate câmpurile vor fi afișate pe pagina dvs.

    • Valoare implicită:! IS_NETWORK_ADMIN () &&! IS_ADMIN () &&! Bp_is_user_profile_edit () &&! Bp_is_register_page ()
  • fetch_fields opțional

    Dacă doriți să aduceți câmpurile fiecărui grup.

    • Valoarea implicită: falsă
  • fETCH_FIELDS_DATA OPȚIONAL

    Dacă doriți să aduceți date pentru fiecare câmp. Necesită un USER_ID $.

    • Valoarea implicită: falsă
  • exclude_groups opțional

    Lista sau o serie de ID-uri de grup pentru a exclude.

    • Valoarea implicită: Array ()
  • exclude_fields opțional

    Lista separată prin virgulă sau o serie de ID-uri de câmp pentru a exclude.

    • Valoarea implicită: Array ()
  • update_meta_cache opțional

    Indiferent dacă doriți să prelutați XProfilemeta pentru toate grupurile, câmpurile și datele preluate.

    • Valoarea implicită: Adevărat

Utilizare avansată.

Fiți toate datele de profil pentru utilizator cu ID 10.

Fiți datele profilului pentru câmpurile din grupul de profil ID 2 pentru utilizator cu ID 10.

Fiți datele profilului pentru câmpurile din grupul de profil ID 2.

Fiți toate datele de profil, chiar și grupurile goale, pentru utilizatorul curent.

Fiți toate datele de profil pentru utilizator cu ID 10, cu excepția câmpurilor cu ID 5, 6, 7.

Semnificând faptul că persoana "a eșuat".

Mulți oameni nu observă deloc acest lucru.

"Placa de beton" pe capul lor pare atât de familiară și familiară că percep tranziția spre un stat creativ - când sunt plini de putere și se simt omnipotenți și uniți cu tot ceea ce este ceva neobișnuit ... pentru ei este un progres cel mai puternic.

Dar aceasta este o stare naturală a unei persoane?!

Prin urmare, când:

Pas pentru tine. Provocare în fiecare zi

Nu știu cum să înveți să te iubești?

Obțineți 14 exerciții care vă vor ajuta să vă luați pe dvs. și viața voastră în toată plinătatea ei!

Apăsând butonul "Instant Access", sunteți de acord cu procesarea datelor dvs. personale și sunteți de acord cu

  • Flore în auto-utilizare
  • Adesea simt starea de spirit proastă
  • Simțiți-vă mic și fără valoare
  • Du-te pe emoții
  • Acționează "pe mașină"
  • Nu vreau să mă ridic dimineața
  • Lupta cu obstacole permanente
  • Simți-vă fără putere

puteți spune cu încredere că ați eșuat.

Și primul pas pe calea "vindecării" - Vedeți și realizați.Ce ați căzut ... a căzut din starea de creație obișnuită.

Cu cât o faci mai repede, cu atât mai repede ia măsuri pentru a vă întoarce la tine!

Dacă ați "eșuat" - cum să ieșiți din groapă 3D

De îndată ce ți-ai dat seama că nu este o lume în jurul tău, deodată a devenit gri și plictisitor, și tu înșiși ai început să o percepe ca atare, sarcina ta principală este să comutați.

Puteți face acest lucru în moduri diferite:

1. Porniți muzica care vă inspiră

Iritație, oboseală, starea de spirit proastă creează un cocon de energie cu fibră mică în jurul vostru.

Colectați colecția de piese și compoziții care vă vor permite să atingeți o vibrație mai mare.

Ce poate fi mai ușor decât să includeți compoziții preferate în player și să faceți afacerea familiară!

De obicei, într-o astfel de stare, se trage ceva melancolic și chiar decadent, sub starea de spirit ... Opriți urgent!

Eu însumi mă întorc pe Alutia efectuată de Anastasia Dobrovolskaya))

Când eșuezi, te simți separat, nimeni nu te apreciază și nu înțelege. În interiorul amărăciunii și consolidarea de sine cresc.

În acest moment, inima dvs. închide armura puternică concepută pentru a vă proteja.

Imposibil de intrat în starea creativă cu o inimă închisă!

Astfel încât sarcina dvs. este - restaurați propria sensibilitate. Acest lucru se poate face folosind practici meditative (a se vedea paragraful 6).

Sau combinați beneficiul și plăcerea de a viziona un film bun.

Comedia nu se va potrivi. Aveți nevoie de un film care vă va afecta sufletul și vă va face să empatizați!

De exemplu, acestea:

3. Strângeți-vă în impresii luminoase

Sufletul tău este alimentat de culori strălucitoare. Dă-i asta. Chiar și prin "Nu vreau"!

Ieși din casă. Du-te la cumpărături, galerii, muzee. În viața reală sau practic (capabilitățile de internet le permit).

Personal, sunt foarte inspirat de luminile orașului de noapte.

Și noaptea trecută am căzut într-un basm: a fost o ceață pe stradă și am decis să ajungem la mare ... Shelst de valuri, ceață de lapte în jurul valorii de lapte și lumină fascinantă a lanternelor ... Full Sur. Ne pare rău pentru tehnologie nu poate transmite această frumusețe.

4. Faceți un lucru preferat

Când vă scufundați că vă place să faceți, gândurile obsesive, îndoielile și întrebările se îndepărtează în fundal.

Activați pornirea dvs. creativă și creați.

Poate că nu veți ajunge imediat să prindeți unitatea de la ceea ce faceți ... Principalul lucru nu este să vă opriți la jumătatea drumului. Aceasta este condiția dvs. de resurse și știți despre asta.

Prin urmare, nu întârziați mai târziu, alocați timpul să vă plimbați în lucrul dvs. preferat cu pasiunea.

5. Recompania în natură

Natura nu are vreme rea, nu există o stare proastă. Natura vă permite să fiți echilibrați în mod natural.

Chiar dacă mergeți la o plimbare cu întreaga familie, întrebați-vă timp de 10 minute să nu atingeți. Du-te la lateral, ascultați zgomotul vântului, scârțâit copacilor, atingeți crusta dură. Apăsați pe cer. Scorul de echilibru al naturii de fiecare celulă.

După ce ați atras atenția, vine o serie de pas următor. Acum sunteți mai puțin echilibrat și puteți efectua practici simple care vă vor sprijini în revenirea la starea obișnuită.

Orice metode de armonizare și de echilibrare, practici pentru divulgarea inimii și construirea canalului vertical al spiritului, precum și practicile energetice pentru a vă mări nivelul de energie.

6. Extindeți-vă inima

Insultele dvs., pretinde, mânie pe tine însuți și de auto-critică a unei scăderi peste picături se suprapun canalele energetice ale inimii tale.

7. Solicitați binecuvântările și sprijinul pentru dvs. mai mare

La momentul eșecului, vă simțiți ca un mic om mic, atât de obișnuit și imediat, cel mai probabil ați uitat că nu sunteți doar corpul, gândurile și sentimentele voastre.

Ai uitat că există o parte mai înțeleaptă și mai avansată din partea ta - cea mai înaltă "i", care nu intervin în viața ta, atâta timp cât tu Nu intreba despre.

Deci, "Întrebați-vă și dați-vă va fi"!

Dacă nu v-ați întâlnit niciodată / nu a comunicat cu această parte din dvs., meditația vă va ajuta cu acest lucru.

8 Iartă-te pentru eșec

Deci, că nici motivul pentru starea voastră, știți că vă considerați subconștient că sunteți responsabil și cu greu și vinovat, pentru ceea ce sa întâmplat.

Tehnica de purificare a Hooponopono constă din 4 etape: îmi pare foarte rău. Iartă-mă. Mulțumesc. Te iubesc.

Cu mulți ani în urmă, când lumea mea, mi sa părut, sa prăbușit în ochii mei, fraze au apărut în capul meu:

Te iert. Multumesc. Te las să mergi cu dragoste.

Timp de câteva ore la rând, i-am pronunțat cu voce tare ca o mantra, și apoi mi-am dat seama că am uitat un element important și am adăugat: mă iert!

Iartă-te pentru această experiență. Mulțumesc pentru el. Și să pleci cu dragoste.

9. Efectuați o melodie de recunoștință

Cu acest cântec este legat de experiența mistică a multor oameni. Pentru a face să funcționeze pentru dvs., este important să efectuați 3 condiții: 1) să vă retrageți timp de 15 minute, astfel încât nimeni să vă distragă, și v-ați simțit eliberat, 2) includeți coloane la maxim 3) Cântați împreună cu Premalul Virgin Premal Partidul Femeilor "Alilua" Forța completă.

Aliluya - Song de mulțumire. Pentru tot ceea ce a fost și este în viața voastră.

Prindeți starea de spirit a acestui cântec și nu ezitați să cântați după cum puteți și se dovedește. Vocea ta în sine va fi adormită cu vibrația necesară.

Și din moment ce centrul gâtului este responsabil pentru auto-exprimarea voastră în această lume, vă scufundați nu numai din mulțumiri, ci și care vă exprimați cine sunteți, în mod inerent fără măști, plângeri și eșecuri.

Încerca! Nu vei regreta!

P.S. Propun în comentariile de a stabili numele filmelor care ți-au afectat sufletul (nu vom renunța de la melodii de muzică).

P.P.S. Voi fi recunoscător dacă împărtășiți link-uri către videoclipurile dvs. preferate pe YouTube, stocul meu se apropie deja la un scop ((

Cu ajutorul sistemelor de profilare, puteți colecta informații despre care funcțiile din codul PHP consumă mai mult timp procesor și memorie cu acces aleator, adică identificarea spațiului de memorie cel mai lent și exigent din programul PHP.

xhprof.

XHPROF - Profil PHP proiectat în Facebook.

Instalare:

Aptitudinea Instalați PHP-Pe Pecl Install XhProf-0.9.4 Echo "extensie \u003d xhprof.so" \u003eEtc/php5/mods-available/xhprof.ini ln -s /etc/php5/mods-available/xhprof.ini / etc /PhP5/conf.d/xhprof.ini Apachect Reporting

Fișierele necesare sunt localizate în director. / USR / Share / PHP. Cu toate acestea, nu toate, ci numai cu cod PHP. Pentru rapoartele normale de afișare necesită jQuery și CSS. Ei le pot obține din depozit pe Github:

Git clone https://github.com/facebook/xhprof.git.

După aceea, în codul scriptului PHP în locul în care colectarea datelor trebuie inițiată prin adăugarea unui șir:

Xhprof_enable (xhprof_flags_cpu + xhprof_flags_memory);

În parametrii sunt parametrii pentru colectarea datelor. În acest caz, veți colecta date despre sarcina de pe procesor și pe utilizarea RAM. Un alt parametru este posibil. Xhprof_flags_no_builtins. Când nu sunt colectate date despre funcțiile încorporate.

$ xhprof_data \u003d xhprof_dizable (); include_once "xhprof_lib / utils / xhprof_lib.php"; include_once "xhprof_lib / utils / xhprof_runs.php"; $ xhprof_runs \u003d nou xhprofruns_default (); $ Run_id \u003d $ xhprof_runs-\u003e SAVE_Run ($ xhprof_data, "xhprof_test"); Echo "Raport: http: //domain.tld/xhprof_html/index.php? Run \u003d $ run_id & sursa \u003d xhprof_test"; Echo "\\ n";

În linie $ Run_id. În citate au indicat numele profilului care poate fi setat în mod arbitrar.

Rezultatul în forma procesată arată astfel:

Dacă specificați parametrul Xhprof_flags_no_builtins.Acest lucru arată că numărul de caracteristici apeluri este redus semnificativ:

Tabelul prezintă următoarele informații:

Apeluri. - numărul de apeluri funcții,
Timp de perete. - timpul general de lucru al funcției este tot timpul așteptând un răspuns din resursele externe,
CPU. - cât de mult a fost pus pe procesarea funcțiilor,
Memora - Câte RAM a fost implicat,
Peakmemuse - consumul de memorie maximă.

Pe măsură ce modificatorii proeminențează:

Inclusiv. - inclusiv - luând în considerare apelurile pentru alte funcții din această funcție,
Excl - Exclusiv - fără contabilitate pentru caracteristici.

În plus, tabelul oferă informații despre timpul total de procesare, memoria utilizată și numărul de apeluri caracteristice.

De asemenea Xhprof. Vă permite să construiți rapoarte diferențe între două lansări, care sunt desemnate roșu și verde. Folosind astfel de rapoarte, puteți obține o imagine clară a îmbunătățirilor după fiecare modificare a codului.

Pentru a obține un astfel de raport, trebuie să utilizați referința tipului:

http: //domain.tld/xhprof_html/index.php? Run1 \u003d run_id1 & run2 \u003d run_id2 & sursa \u003d xhprof_test

unde run_id1. și run_id2. - Identificatori de execuție.

Dacă este instalat Graphviz.:

Aptitudinea instală pe Graphviz.

De asemenea, pentru profilul PHP XHPROF există interfețe web ale terților care utilizează baze de date:

xdebug.

xdebug. - Debugger de cod PHP (profilare) scris de Derk Rethans (Derick Rethans).

Instalare:

Yum instalați php5-xdebug

Apoi editați config:

Nano /etc/php5/mods-available/xdebug.ini.

prin adăugarea de linii la acesta:

Xdebug.profiler_enable \u003d 1 xdebug.profiler_agregate \u003d pe xdebug.profiler_output_dir \u003d / TMP

Aici pornim profilul PHP și specificăm directorul în care profilurile se îndoaie. Profilele sunt create cu numele speciilor cachegrint.out. *

Există un webgrind Web Client: https://github.com/jokkedk/webgrind. Funcționează nu prea repede, dar vă permite să vizualizați rapid profilurile mici. De fapt, acesta este codul pe PHP, care trebuie să fie înclinat cu GitHub:

Git clone https://github.com/jokkedk/webgrind.git.

creat directory. webgrind.pe care doriți să le copiați în directorul oricărui site și contactați-l din browser. Apoi, astfel că în Debian a câștigat construcția de grafice în fișier de configurare config.php. trebuie să remedieți calea către fișierul executabil graphviz.. Ar trebui să funcționeze astfel:

Static $ dotexecutable \u003d "/ usr / bin / dot";

În plus, puteți ajusta fusul orar:

Static $ implicitTimezone \u003d "Europa / Moscova";

În titlu, puteți alege un profil și puneți un marcaj de verificare pentru a ține seama de funcțiile încorporate. În tabelul însuși, funcțiile sunt vizibile, numărul de apeluri, funcția funcției în sine și timpul luând în considerare așteptările. Pentru a vă înlătura în funcții, faceți clic pur și simplu pe vârstnicul triunghiular. În cazul meu, cu suficiente profiluri în vrac (de la mai multe megaocteți), așteptările rezultatului a fost inutil decât cel mai mare. Probabil pentru profiluri destul de mari, este mai bine să utilizați programe locale Spamora.

Diagrama poate arăta astfel:

Rețineți că webgrind. Nu trebuie să utilizați pe serverele de producție, deoarece orice autorizație nu este furnizată, dar are acces la codul de fișier la PHP. Dacă este necesar, utilizați autorizația de bază Apache.

Există, de asemenea, programe pentru analizarea profilurilor ca sub Linux:

Despre profiling

Datele de profil vă pot ajuta să vă îmbunătățiți aplicația, adică pentru a obține anumite scopuri, de exemplu, un consum redus de memorie, reduceți timpul de generare a paginii și așa mai departe.

Informațiile despre profil este punctul de plecare în optimizare: Este raportat cât timp este generat rezultatul, cât de multă memorie este utilizată și câte caracteristici apar. Cu date mai detaliate, puteți îmbunătăți acești indicatori.

De exemplu, dacă utilizați cadrul, utilizarea unor funcții cadru poate duce la un apel la mai multe funcții de bază. Dacă citiți câteva date de mai multe ori, atunci merită să păstrați rezultatul unei variabile.

De asemenea, profilul poate ajuta la înțelegerea în care merită să utilizați un cache de cod PHP, de exemplu, cu APCU. sau memcached..

În primul rând, merită optimizarea funcțiilor care necesită cel mai mult timp pentru a executa. După ce totul este optimizat și se pare că nu este nimic mai mult de îmbunătățit, este în valoare de sortarea funcțiilor de numărul de provocări și de a lucra la scăderea acestuia. Chiar dacă PHP funcționează repede, merită să ne gândim dacă trebuie să apelați atât de des funcții?

Când se găsesc următoarele situații, merită să ne gândim la cache:

  • Funcțiile neschimbate sunt cauzate în interiorul ciclului,
  • Unele conținuturi sunt generate de două ori,
  • Conținut care nu se schimbă generată de fiecare dată
  • Conținutul este generat, chiar dacă nu este utilizat.

Nu cache totul la rând, deoarece memoria este, de asemenea, o resursă valoroasă. Păstrați datele pe care le aplicați în mod constant. De asemenea, cache-ul are un sens prea mare dacă cache-ul petrece mai multe resurse decât salvează.

În plus față de cache-ul din cod, nu trebuie să uitați de caching folosind un server web (), precum și pe partea clientului. Dacă utilizați anteturile potrivite, atunci multe cereri pot fi permise înainte de a intra în server.

Aplicația de profilare este o colecție de date privind viteza diferitelor secțiuni ale programului (fișiere și funcții). Există multe instrumente de profil PHP, dar nu toate instrumentele sunt potrivite pentru analizarea directă în producție.

Xhprof. - Mega Profiler simplu, care colectează statistici dreptate în timp ce aplicația lucrează aproape fără aerisire.

De ce profilul?

Dacă cererea începe să lucreze încet, profilul va ajuta la învățarea care parte este Tupit. Rezultatul profilului este, de obicei, o listă de funcții executate și timpul executării acestora.

Profilarea ar trebui făcută înainte de optimizarea aplicațiilor. În caz contrar, veți fi ghidat de presupuneri. Cel mai probabil greșit.

Problema XDebug.

Xdebug este o soluție puternică pentru PHP. Dar platforma XDebug în sine este atât de grea încât ea nu pot fi utilizate pe site-urile de lucru. Xdebug creează o sarcină semnificativă pe resursele serverului și încetinește aplicația.

Pe de altă parte, problemele de pe site-ul "live" pot fi complet în afara mediului dezvoltator. Profilarea numai pe calculatoarele computerelor va arăta doar o parte din probleme.

De aceea a fost dezvoltată decizia Xhprof.. Este destinat utilizării în aplicațiile de lucru. Ideea principală a acestui profiler este de a crea un minim de aplicare a aplicației, colectați în același timp toate datele necesare cu privire la viteza de lucru. Soluția este dezvoltată de către tipi de pe Facebook și susținută de noile versiuni PHP.

Xhprof.

Instalare

Debian Xhprof are în pachetele SID, deci: apt-get instalare xhprof

De asemenea, puteți colecta singur XHPROF.

Pornirea profilului

Să avem un scenariu cu un astfel de cod:

a executa ();

Vom desena profilarea folosind Xhprof. Pentru a face acest lucru, pe această pagină trebuie să:

  1. Includeți un profilent la început.
  2. La sfârșitul programului, opriți profilul și salvați datele obținute.

Va arăta așa:

# Inițializarea profiluluixhprof_enable (xhprof_flags_cpu + xhprof_flags_memory); # Realizăm un program după pornirea profiluluia executa (); # Începeți un profil după executarea programului$ xhprof_data \u003d xhprof_dizable ();

# Păstrați rezultatul profilului în variabila $ XHPROF_DATA

  • Funcţie xhprof_enable () Acceptă steaguri ca argumente. Xhprof_flags_cpu pentru a repara statisticile procesorului, xhprof_flags_memory - pentru memorie, xhprof_flags_no_builtins - pentru a ignora funcțiile încorporate.
  • xhprof_dizable () Opriți profilul și returnați statisticile colectate.

Rapoarte

Generaţie

Datele colectate pot fi analizate în interfața XHPROF pentru a construi rapoarte. Pentru a face acest lucru, trebuie să descărcați surse XHPROF: CD / var / www; Wget http://pel.php.net/get/xhProf-0.9.4.tgz gzip -d xhprof-0.9.4.tgz tar -xvf xhprof-0.9.4.tar

După aceea, este necesar să se facă modificări ale scriptului:

include_once "/var/www/xhprof-0.9.4/xhprof_lib/utils/xhprof_lib.php"; include_once "/var/www/xhprof-0.9.4/xhprof_lib/utils/xhprof_runs.php"; $ xhprof_runs \u003d nou xhprofruns_default (); $ Run_id \u003d $ xhprof_runs-\u003e SAVE_Run ($ xhprof_data, "test");

# Cod nou salvează un raport pentru utilizare într-o interfață grafică

Interfață pentru rapoarte

Pentru a vedea raportul, trebuie să configurați gazda virtuală la dosarul //www/xhprof-0.9.4/xhprof_html. De exemplu, în Nginx:

Server (server_name xh..9.4 / xhprof_html; index Index.php; -s reîncărcați.

După aceasta, va apărea o listă de rapoarte:

Tabelul conține o listă de funcții care au fost efectuate în cadrul unei singure pagini cu informații suplimentare:

  • Apeluri - numărul și procentul de apeluri ale funcțiilor.
  • Inclusiv. Timp de perete - timpul de execuție al funcției cu caracteristici imbricate.
  • Exclusiv. Timp de perete - timpul de execuție al funcției fără funcții imbricate.
  • Inclusiv. CPU - timpul procesorului cu caracteristici imbricate.
  • Exclusiv. CPU - timpul procesorului fără funcții imbricate.
  • Inclusiv. Memuză - Consumul de memorie cu caracteristici imbricate.
  • Exclusiv. Memuză - consum de memorie fără funcții imbricate.
  • Inclusiv. Peakmemuse este consumul maxim de memorie cu caracteristici imbricate.
  • Exclusiv. Peakmemuse - Consumul maxim de memorie fără funcții imbricate.

Rapoarte grafice.

Pentru a construi un raport grafic, asigurați-vă că aveți grindviz: apt-get instalare graficviz

Secțiunile intensive de resurse ale codului sunt evidențiate galben (mediu) și roșu (cel mai greu). Acestea sunt secțiunile codului care utilizează multe resurse în ceea ce privește restul programului. Aceasta poate fi o funcție lentă sau un număr mare de apeluri cu funcții rapide. În exemplul nostru, funcția str_replace () marcat roșu datorită a 262 de apeluri.

Rapoarte agregate

Interfața XHPROF vă permite, de asemenea, să vizualizați informații agregate imediat din mai multe rapoarte. Pentru aceasta, Run_ID este transmis prin virgule: http: //xh..php? Run \u003d 53A894F6D5D9B, 53A894FCF126E.& Sursă \u003d test

TL; Dr.

Utilizați Xhprof la profilul PHP direct în producție.



Ți-a plăcut articolul? Împărtășește-l