Tester og anmeldelser

Grundig profil php id. Profilering av PHP med XHprof. Så når du

Signalerer at en person har "mislyktes".

Mange legger ikke merke til dette i det hele tatt.

"Betongplaten" på hodet virker så kjent og kjent at de oppfatter overgangen til en kreativ tilstand - når de er fulle av styrke og føler seg allmektige og ett med alt som eksisterer - som noe uvanlig... for dem er dette en kraftig gjennombrudd.

Men dette er den NATURLIGE tilstanden til en person?!

Så når du:

Gå mot DEG SELV. Utfordre hver dag

Vet du ikke hvordan du skal lære å elske deg selv?

Få 14 øvelser som vil hjelpe deg å akseptere deg selv og livet ditt i sin helhet!

Ved å klikke på «Øyeblikkelig tilgang»-knappen, samtykker du til behandlingen av dine personopplysninger og godtar

  • Du faller inn i selvmedlidenhet
  • Du føler deg ofte i dårlig humør
  • Du føler deg liten og verdiløs
  • Du er drevet av følelser
  • Handler "automatisk"
  • Jeg vil ikke stå opp om morgenen
  • Du møter konstante hindringer
  • Føler seg maktesløs

det er trygt å si at du MISLYKKET.

Og det aller første skrittet på veien til "helbredelse" er SE og innse, at du har falt... falt ut av din vanlige kreative tilstand.

Jo før du gjør dette, jo raskere vil du ta grep for å komme tilbake TIL DEG SELV!

Hvis du "mislyktes" - Hvordan komme deg ut av et 3D-hull

Så snart du skjønner at det ikke er verden rundt deg som plutselig har blitt grå og kjedelig, men at du selv har begynt å oppfatte det slik, er hovedoppgaven din å BYTTE.

Du kan gjøre dette på forskjellige måter:

1. Spill musikk som inspirerer deg

Irritasjon, tretthet og dårlig humør skaper en kokong av lavvibrasjonsenergi rundt deg.

Samle samlingen av spor og komposisjoner som lar deg stille inn til en høyere vibrasjon.

Hva kan være enklere enn å slå på favorittsangene dine i spilleren og gjøre de vanlige tingene!

Vanligvis i en slik tilstand blir man tiltrukket av noe melankolsk og til og med dekadent, for å matche stemningen... Bytt snarest!

I slike øyeblikk slår jeg selv på Hallelujah fremført av Anastasia Dobrovolskaya)))

Når du mislykkes, føler du deg isolert og ingen setter pris på eller forstår deg. Bitterhet og selvmedlidenhet vokser innvendig.

I dette øyeblikket er hjertet ditt dekket med tung rustning designet for å beskytte deg.

Det er umulig å gå inn i en kreativ tilstand med et lukket hjerte!

Så din oppgave er gjenopprette din egen følsomhet. Dette kan gjøres gjennom meditative praksiser (se punkt 6).

Eller kombiner fordelene og gleden ved å se en god film.

Komedier duger ikke. Du trenger en film som berører sjelen din og får deg til å føle empati!

For eksempel disse:

3. Fordyp deg i levende inntrykk

Sjelen din næres av lyse farger. Gi henne dette. Selv gjennom "Jeg vil ikke"!

Kom deg ut av huset. gå på shopping, gallerier, museer. I det virkelige liv eller virtuelt (Internett tillater dette).

Personlig er jeg veldig inspirert av byens lys om natten.

Og i går kveld befant vi oss i et eventyr: det var tåke ute, og vi bestemte oss for å gå til sjøen... Bølgesusen, melketåken rundt og det fascinerende lyset fra lykter... helt surrealistisk. Det er synd at teknologi ikke kan formidle denne skjønnheten.

4. Gjør det du elsker

Når du fordyper deg i det du elsker å gjøre, forsvinner påtrengende tanker, tvil og spørsmål i bakgrunnen.

Du aktiverer kreativiteten din og SKAPER.

Du kan kanskje ikke umiddelbart fange drivkraften til det du gjør... det viktigste er ikke å stoppe halvveis. Dette er din ressurstilstand, og du vet det.

Så ikke utsett det til senere, ta deg tid til å kaste deg ut i det du elsker med lidenskap.

5. Kom deg bort til naturen

Naturen har ikke dårlig vær, ikke dårlig humør. Naturen lar deg balansere naturlig.

Selv om du går en tur med hele familien, ber deg om å ikke røre den på 10 minutter. Gå til side, lytt til lyden av vinden, knirkingen fra trærne, ta på den grove barken. Se inn i himmelen. Absorber naturens balanse inn i hver celle.

Når du har flyttet oppmerksomheten din, er det tid for neste trinn. Nå er du mer eller mindre balansert og kan utføre enkle øvelser som vil hjelpe deg tilbake til din vanlige tilstand.

Alle metoder for harmonisering og balansering, praksis for å åpne hjertet og bygge en vertikal kanal av Ånden, samt energipraksis for å øke energinivået ditt er egnet.

6. Åpne hjertet ditt

Dine klager, påstander, sinne på deg selv og selvkritikk blokkerer energikanalene i hjertet ditt dråpe for dråpe.

7. Be om velsignelser og støtte fra ditt Høyere Selv

I feiløyeblikket føler du deg som en liten person, så vanlig og spontan at du mest sannsynlig glemmer at du ikke bare er din kropp, dine tanker og følelser.

Du glemmer at det er en klokere og mer avansert del av deg - ditt Høyere Selv, som ikke blander seg inn i livet ditt før du IKKE spør om dette.

Dette betyr: "Be, og det vil bli gitt deg"!

Hvis du aldri har møtt/kommunisert med denne delen av deg, vil meditasjon hjelpe deg med det.

8. Tilgi deg selv for feil.

Uansett årsak til tilstanden din, vit at du ubevisst anser deg selv som ansvarlig, og i alvorlige tilfeller skyldig, for det som skjedde.

Ho'oponopono renseteknikken består av 4 trinn: Jeg er så lei meg. Jeg beklager. Takk. Elsker deg.

For mange år siden, da min verden så ut til å kollapse foran øynene mine, dukket følgende setninger opp i hodet mitt:

Jeg tilgir deg. Jeg takker deg. Jeg slipper deg løs med kjærlighet.

I flere timer på rad sa jeg dem høyt som et mantra, og så skjønte jeg at jeg hadde glemt et viktig element, og la til: Jeg tilgir meg selv!

Tilgi DEG SELV for denne opplevelsen. Takk SELV for det. Og gi slipp med kjærlighet.

9. Syng sangen om takknemlighet

Mange mennesker har mystiske opplevelser knyttet til denne sangen. For at dette skal fungere for deg, er det viktig å oppfylle 3 betingelser: 1) trekke deg tilbake i ca. 15 minutter slik at ingen distraherer deg og du føler deg avslappet, 2) slå på høyttalerne maksimalt, 3) syng sammen med Deva Premal. kvinnelig del av "Hallelujah" i full kraft.

Hallelujah er en sang av takknemlighet. For alt som var og er i livet ditt.

Fang stemningen i denne komposisjonen og ikke vær sjenert for å synge slik du vet hvordan. Stemmen din vil stille inn til ønsket vibrasjon.

Og siden halssenteret er ansvarlig for ditt selvuttrykk i denne verden, øser du ikke bare ut takknemlighet, men uttrykker også hvem du er i kjernen din, uten masker, pretensjoner og feil.

Prøv det! Du vil ikke angre!

P.S. Jeg foreslår at du legger ut navnene på filmene som berørte sjelen din i kommentarfeltet (vi vil heller ikke nekte musikkspor).

P.P.S. Jeg ville være takknemlig om du kunne dele lenker til favorittvideoene dine på Youtube, lagerbeholdningen min er allerede i ferd med å bli lav ((

Profildataløkken er den mest komplekse av alle de tilpassede BuddyPress-løkkene. Det er faktisk to løkker i en, den første er å sløyfe gjennom profilfeltgrupper, og den andre å sløyfe gjennom profilfelt i den profilfeltgruppen.

Standard sløyfe

Denne brukeren har ikke en profil.

Godkjente parametere

Funksjonen bp_group_has_profile() vil godta en rekke parametere som vil manipulere dataene som returneres.

  • profile_group_id valgfritt

    Som standard vil alle grupper og alle felt vises. Hvis du oppgir IDen til en profilfeltgruppe, vil bare feltene i denne gruppen vises.

    • Standardverdi: usann
  • user_id valgfritt

    ID-en til brukeren du vil hente profildataene for. Dette kreves hvis du er utenfor en medlemsprofil-URL (/members/andy/...), ellers er det IDen til den viste brukeren.

    • Standardverdi: bp_displayed_user_id()
  • member_type valgfri

    Begrens felt med de som er begrenset til en gitt medlemstype, eller en rekke medlemstyper. Hvis $user_id er oppgitt, vil verdien av $member_type bli overstyrt av medlemstypene til den oppgitte brukeren. Den spesielle verdien av "any" vil bare returnere de feltene som er ubegrenset av medlemstype - dvs. de som gjelder for alle typer.

    • Standardverdi: usann
  • hide_empty_groups valgfritt

    Som standard vil ikke tomme grupper vises. Hvis du oppgir 0-verdien, vil alle gruppene vises.

    • Standardverdi: sann
  • hide_empty_fields valgfritt

    Som standard, vis bare tomme felt hvis vi er på dashbordet, eller vi er på en brukers profilredigeringsside, eller dette er en registreringsside. Hvis du oppgir 0-verdien, vil alle feltene vises på siden din.

    • Standardverdi: !is_network_admin() && !is_admin() && !bp_is_user_profile_edit() && !bp_is_register_page()
  • hente_felt valgfritt

    Om hver gruppes felt skal hentes.

    • Standardverdi: usann
  • fetch_fields_data valgfritt

    Om du skal hente data for hvert felt. Krever en $user_id .

    • Standardverdi: usann
  • ekskluder_grupper valgfritt

    Kommaseparert liste eller en rekke gruppe-ID-er som skal ekskluderes.

    • Standardverdi: array()
  • ekskluder_felt valgfritt

    Kommaseparert liste eller en rekke felt-ID-er som skal ekskluderes.

    • Standardverdi: array()
  • update_meta_cache valgfritt

    Om xprofilemeta skal forhåndshentes for alle hentede grupper, felt og data.

    • Standardverdi: sann

Avansert bruk

Hent alle profildataene for brukeren med ID 10 .

Hent profildata for felt i profilgruppe ID 2 for brukeren med ID 10 .

Hent profildata for felt i profilgruppe-ID 2.

Hent alle profildataene, til og med tomme filer og grupper, for gjeldende bruker.

Hent alle profildataene for brukeren med ID 10 , unntatt felt med ID 5, 6, 7.

Applikasjonsprofilering er innsamling av data om utførelseshastigheten til ulike programseksjoner (filer og funksjoner). Det er mange verktøy PHP-profilering, men ikke alle verktøy er egnet for å utføre analyser direkte i produksjonen.

XHProf- en mega enkel profiler som samler inn statistikk direkte mens applikasjonen kjører nesten uten overhead.

Hvorfor profil?

Hvis en applikasjon begynner å kjøre sakte, kan profilering hjelpe deg med å finne ut hvilken del som er treg. Resultatet av profilering er vanligvis en liste over utførte funksjoner og deres utførelsestid.

Profilering bør gjøres før enhver applikasjonsoptimalisering. Ellers vil du bli veiledet av gjetting. Mest sannsynlig feil.

Xdebug-problem

Xdebug er en kraftig løsning for PHP. Men selve Xdebug-plattformen er så tung at den kan ikke brukes på live nettsteder. XDebug skaper en betydelig belastning på serverressurser og senker applikasjonen.

På den annen side kan problemer på en live-side være helt forskjellige fra de i et utviklingsmiljø. Profilering kun på utviklerdatamaskiner vil vise bare en del av problemene.

Derfor ble løsningen utviklet XHprof. Den er beregnet for bruk i applikasjoner som kjører. Hovedideen til denne profileren er å skape en minimumsbelastning på applikasjonen mens du samler inn alle nødvendige data om operasjonshastigheten. Løsningen er utviklet av gutta fra Facebook og støttes av nye versjoner av PHP.

XHProf

Installasjon

På Debian er XHprof i sid-pakker, så: apt-get install xhprof

Du kan også bygge XHprof selv.

Aktiver profilering

La oss si at vi har et skript med følgende kode:

henrette();

La oss utføre profilering med XHprof. For å gjøre dette på denne siden trenger du:

  1. Aktiver profileringsverktøyet helt i begynnelsen.
  2. Helt på slutten av programmet, stopp profileringsverktøyet og lagre de mottatte dataene.

Det vil se slik ut:

# Initialiser profilerenxhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY); # Kjør programmet etter at du har slått på profileren henrette(); # Stopp profileringsverktøyet etter å ha kjørt programmet$xhprof_data = xhprof_disable();

# Lagre profileringsresultatet til $xhprof_data-variabelen

  • Funksjon xhprof_enable() tar flagg som argumenter. XHPROF_FLAGS_CPU for registrering av prosessorstatistikk, XHPROF_FLAGS_MEMORY for minne, XHPROF_FLAGS_NO_BUILTINS for å ignorere innebygde funksjoner.
  • xhprof_disable() vil slå av profileringsverktøyet og returnere den innsamlede statistikken.

Rapporter

Generasjon

De innsamlede dataene kan analyseres i XHprof-grensesnittet for å generere rapporter. For å gjøre dette, må du laste ned XHprof-kildene: cd /var/www; wget http://pecl.php.net/get/xhprof-0.9.4.tgz gzip -d xhprof-0.9.4.tgz tar -xvf xhprof-0.9.4.tar

Etter dette må du gjøre endringer i skriptet:

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 = ny XHProfRuns_Default(); $run_id = $xhprof_runs->save_run($xhprof_data, "test");

# Ny kode lagrer rapporten for bruk i GUI

Grensesnitt for rapporter

For å se rapporten må du konfigurere den virtuelle verten til mappen /var/www/xhprof-0.9.4/xhprof_html. For eksempel, i Nginx:

Server ( server_name xh..9.4/xhprof_html; index index.php; plassering ~* \.(php)$ ( fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME : fastcgi_x) -s reload

Etter dette vil en liste over rapporter vises:

Tabellen inneholder en liste over funksjoner som ble utført på én side med tilleggsinformasjon:

  • Anrop — antall og prosentandel av funksjonsanrop.
  • Inkl. Veggtid — utførelsestid for en funksjon med nestede funksjoner.
  • Ekskl. Veggtid er utførelsestiden for en funksjon uten nestede funksjoner.
  • Inkl. CPU - prosessortid med nestede funksjoner.
  • Ekskl. CPU - prosessortid uten nestede funksjoner.
  • Inkl. MemUse - minneforbruk med nestede funksjoner.
  • Ekskl. MemUse - minneforbruk uten nestede funksjoner.
  • Inkl. PeakMemUse - maksimalt minneforbruk med nestede funksjoner.
  • Ekskl. PeakMemUse - maksimalt minneforbruk uten nestede funksjoner.

Grafiske rapporter

For å bygge en grafisk rapport, sørg for at du har graphviz installert: apt-get install graphviz

Ressursintensive deler av koden er uthevet i gult (middels) og rødt (tyngst). Dette er de delene av kode som bruker mye ressurser i forhold til resten av programmet. Dette kan være én sakte funksjon eller mange anrop til en rask funksjon. I vårt eksempel er funksjonen str_erstatt() merket rødt på grunn av 262 anrop.

Samlede rapporter

XHprof-grensesnittet lar deg også se samlet informasjon fra flere rapporter samtidig. For å gjøre dette sendes run_id atskilt med kommaer: http://xh..php?run= 53a894f6d5d9b,53a894fcf126e&kilde=test

TL;DR

Bruk XHprof til å profilere PHP direkte i produksjon.

Ved hjelp av profileringssystemer kan du samle informasjon om hvilke funksjoner i PHP-kode som bruker mer CPU-tid og RAM, det vil si identifisere de tregeste og mest minnekrevende stedene i et PHP-program.

xhprof

XHProf - PHP-profiler utviklet av Facebook.

Installasjon:

Aptitude install php-pear pecl install xhprof-0.9.4 echo "extension=xhprof.so" > /etc/php5/mods-available/xhprof.ini ln -s /etc/php5/mods-available/xhprof.ini /etc /php5/conf.d/xhprof.ini apachectl omstart

Filene som er nødvendige for arbeid er plassert i katalogen /usr/share/php. Imidlertid ikke alt, men bare med PHP-kode. For normal visning av rapporter kreves jquery og css. De kan fås fra github-depotet:

Git-klone https://github.com/facebook/xhprof.git

Etter dette legger du til linjen i PHP-skriptkoden på stedet der datainnsamlingen skal begynne:

Xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY);

Parametre for datainnsamling er angitt i parentes. I dette tilfellet vil data bli samlet inn om prosessorbelastning og RAM-bruk. Et alternativ til er mulig XHPROF_FLAGS_NO_BUILTINS ved bruk samles det ikke inn data om innebygde funksjoner.

$xhprof_data = xhprof_disable(); include_once "xhprof_lib/utils/xhprof_lib.php"; include_once "xhprof_lib/utils/xhprof_runs.php"; $xhprof_runs = ny XHProfRuns_Default(); $run_id = $xhprof_runs->save_run($xhprof_data, "xhprof_test"); echo "Rapport: http://domain.tld/xhprof_html/index.php?run=$run_id&source=xhprof_test"; ekko "\n";

I kø $run_id Anførselstegnene indikerer navnet på profilen, som kan angis vilkårlig.

Det behandlede resultatet ser slik ut:

Hvis du spesifiserer parameteren XHPROF_FLAGS_NO_BUILTINS, kan det sees at antall funksjonsanrop er betydelig redusert:

Tabellen gir følgende informasjon:

Samtaler- antall funksjonsanrop,
Veggtid- den totale driftstiden for funksjonen, inkludert tiden brukt på å vente på svar fra eksterne ressurser,
CPU- hvor mye tid som ble brukt på å behandle funksjoner,
MemUse- hvor mye RAM ble brukt,
PeakMemUse- topp minneforbruk.

Modifikatorene er:

Inkl- inklusive - tar hensyn til anrop til andre funksjoner fra denne funksjonen,
Ekskl.- eksklusiv - unntatt funksjonskall.

I tillegg er det over tabellen informasjon om total behandlingstid, minne brukt og antall funksjonsanrop.

Også XHProf lar deg bygge forskjellsrapporter mellom to kjøringer, som er indikert med røde og grønne farger. Med disse rapportene kan du få et klart bilde av forbedringer etter hver kodeendring.

For å få en slik rapport må du bruke en lenke som denne:

http://domain.tld/xhprof_html/index.php?run1=run_id1&run2=run_id2&source=xhprof_test

Hvor run_id1 Og run_id2- lanseringsidentifikatorer.

Hvis du installerer Graphviz:

Aptitude installer graphviz

Det er også tredjeparts webgrensesnitt for php profiler xhprof som bruker databaser:

xDebug

xDebug- PHP-kodefeilsøker med profileringsevne, skrevet av Derick Rethans.

Installasjon:

Yum installer php5-xdebug

Så redigerer vi konfigurasjonen:

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

legger til linjene til det:

Xdebug.profiler_enable = 1 xdebug.profiler_aggregate = På xdebug.profiler_output_dir = /tmp

Her aktiverer vi PHP-profiler og spesifiserer katalogen der profilene skal lagres. Profiler opprettes med navn som cachegrind.out.*

Det er en webgrind-webklient: https://github.com/jokkedk/webgrind. Det fungerer ikke veldig raskt, men det lar deg raskt se små profiler. Faktisk er dette PHP-koden som må klones fra github:

Git-klone https://github.com/jokkedk/webgrind.git

en katalog vil bli opprettet webgrind, som du må kopiere til katalogen til et hvilket som helst nettsted og få tilgang til det fra nettleseren. Deretter for å få plotting i konfigurasjonsfilen til å fungere i Debian config.php du må korrigere banen til den kjørbare filen graphviz. Det skal se slik ut:

Statisk $dotExecutable = "/usr/bin/dot";

I tillegg kan du justere tidssonen:

Static $defaultTimezone = "Europa/Moskva";

I overskriften kan du velge en profil og krysse av i boksen for å ta hensyn til innebygde funksjoner. Selve tabellen viser funksjonene, antall anrop, driftstiden for selve funksjonen og tiden inkludert venting. For å gå dypere inn i funksjonene klikker du bare på den trekantede pilen. I mitt tilfelle, med ganske store profiler (fra flere megabyte), var ventetiden på resultatet unødvendig høy. Det er nok bedre å bruke lokale seerprogrammer for ganske store profiler.

Grafen kan se slik ut:

merk det webgrind bør ikke brukes på produksjonsservere, siden det ikke er gitt noen autorisasjon, men det er tilgang til php-filkoden. Om nødvendig, bruk minst grunnleggende Apache-autorisasjon.

Det finnes også programmer for å analysere profiler for Linux:

Om profilering

Profildata kan hjelpe deg med å forbedre applikasjonen din, det vil si å nå visse mål, for eksempel redusere minneforbruk, redusere sidegenereringstiden og så videre.

Informasjonen i profilen er utgangspunktet for optimalisering: den forteller hvor lang tid det tar å generere resultatet, hvor mye minne som brukes og hvor mange funksjonskall som gjøres. Med mer detaljerte data kan du forbedre disse beregningene.

For eksempel, hvis du bruker et rammeverk, kan bruk av noen funksjoner i rammeverket føre til kall til flere grunnleggende funksjoner. Hvis du leser noen data flere ganger, kan det være verdt å lagre resultatet i en variabel.

Profileren kan også hjelpe deg å forstå hvor du skal bruke PHP-kodebufring, for eksempel ved å bruke APCu eller memcached.

Først av alt er det verdt å optimalisere funksjonene som krever mest utførelsestid. Når alt er optimalisert og det ser ut til at det ikke er noe igjen å forbedre, er det verdt å sortere funksjoner etter antall samtaler og jobbe med å redusere det. Selv om PHP er raskt, er det verdt å vurdere om funksjoner må kalles så ofte?

Hvis du støter på følgende situasjoner, bør du vurdere caching:

  • Uforanderlige funksjoner kalles inne i en løkke,
  • Noe innhold genereres to ganger,
  • Innhold som ikke endres genereres hver gang,
  • Innhold genereres selv om det ikke brukes.

Du bør ikke cache alt, siden minne også er en verdifull ressurs. Bufre dataene du får tilgang til hele tiden. Dessuten gir caching liten mening hvis caching sløser med mer ressurser enn det sparer.

I tillegg til caching i koden, ikke glem caching ved hjelp av webserveren (), så vel som på klientsiden. Hvis du bruker de riktige overskriftene, kan mange forespørsler løses før de i det hele tatt når serveren.