turbocharge din hjemmeside med memcached

, turbocharge din hjemmeside med memcached,,,,, 9,,,,,,,,, 71,,,,,,, det cyber - mandag envato tuts + kurser vil blive reduceret til $3.- og' t miss.,, din seneste php /mysql websted endelig er online.og det er fedt.men det er ikke så hurtigt, som du vil have det, på grund af de mange sql forespørgsler op, hver gang en side er opstået.over, at du har det, vil det ikke skala i tunge byrder.og du er sikkert ret. i denne forelæsning, vil vi se, hvordan du kan forbedre din hjemmeside er lydhørhed, og hjælpe det omfang til at håndtere mange samtidige besøg ved at gennemføre en cache lag mellem din kode, og jeres database.den gode nyhed er, at det er forholdsvis let, og det kan ske i et par minutter.,,,,, at memcached,, memcached er en højtydende i erindring data caching system.,, moderne websteder og net ansøgninger bruger en masse data, og det er ikke usædvanligt, at så mange som 20 eller endog 30 sql forespørgsler i en enkelt side generation.gang det beløb, som et stort antal besøgende, og ofte får man en overfyldt database, og sider, der tager sekunder til genereres og sendes til kunden, det værktøj, vi bruger i dag for at forbedre resultaterne er memcached.det er et meget avanceret i erindring data caching system.eller sagt på en anden måde, en meget hurtig anvendelse, der kører på deres server og bruger en del af den disponible hukommelse opbevarer en automatiseret system af data.du kan spørge memcached at gøre to ting:,, opbevarer de værdi, v, med nøglen, k, hent den værdi, v, opbevares med nøglen, k, her er minimalistisk, men der er meget, du kan gøre, fordi disse to elementer, som vi vil se meget snart.faktisk, memcached kan gøre et par ting, men de er alle bundet til oplagring eller genfinde data., installation memcached på moderne linux udlodninger er ganske enkel:,, ubuntu:, sudo passende få installere memcached, gentoo:, sudo opstå installere memcached,, redhat:, sudo yum installere memcached, når installeret, memcached vil blive startet automatisk hver gang din server støvler.du kan fastsætte størrelsen af hukommelse, der er forbeholdt memcached, sammen med andre muligheder for konfigurationen fil (, /etc /memcached. conf).64mb er tildelt ved misligholdelse.konfigurationen fil indeholder endvidere en ip - adresse og havnen memcached vil være bundet til.standardværdier (, 127.0.0.1, og 11211) er fint for en standard opsætning,.,, adgang til memcached af folkesundhedsprogrammet, ønsker vi at opbevare og hente data fra din php manuskripter.dette betyder, at vi får brug for en måde at forbinde til memcached af folkesundhedsprogrammet.for at vi skal installere "memcache" udvidelse til folkesundhedsprogrammet.det er en pecl udvidelse, er det meget let at installere med "pecl" maskine følgende kommando:, sudo pecl installere memcache, er der to php udvidelser i forbindelse med memcache: "memcache" og "memcached" (se "d" i det andet).begge er meget ens, men den første, der har en mindre fodaftryk.i denne forelæsning, vi vil bruge den lighter memcache.når installeret, denne udvidelse bør have mulighed for og memcache - relaterede opgaver nu stilles til rådighed for din php manuskripter.,, hvordan caching arbejde?vores arbejde er baseret på følgende antagelser:,, der henter oplysninger fra databasen tager ressourcer (cpu + i /o), henter oplysninger fra databasen, tager tid, vi ofte får de samme data igen og igen, ønsker vi også at opbevare vores data på en måde, som giver os mulighed for at hente det effektivt.,, vi ønsker generelt at redde vores data i en vedvarende miljø (vores mysql database, f.eks.).men vi ønsker også at opbevare vores data på en måde, som giver os mulighed for at hente det effektivt, selv om oplagring ikke er vedvarende.så har vi to kopier af vores data, hvoraf den ene er oplagret i mysql og andre, der er oplagret i memcache. her er de skridt, vi skal tage, for at dette kan ske:,, alle skriver drift (sql indsat, og opdateringer), vil blive gennemført i begge mysql og memcached hver læse drift (sql, udvælger,) vil blive udført i memcached, og vil falde tilbage til mysql i tilfælde af fejl på dette punkt, ville du se, hvilke dele af din kode skal ændres: dele, hvor du skriver data og dele, hvor du læse data.hvis din php kode er velstrukturerede, bør du har pakket dine data kode i funktioner eller - endnu bedre - klasser.hvis så opdatere din lokalitet bør være meget hurtigt.hvis ikke, har du måske en smule mere arbejde.,, der forbinder vores cache - serveren, lad os skabe en forbindelse til vores memcached server.her er den kode, du skal bruge, tidligt i folkesundhedsprogrammet manuskripter: //forbindelse konstanter definere ('memcached_host "," 127.0.0.1); at definere ('memcached_port "," 11211); //forbindelse oprettelse $memcache = nye memcache. $cacheavailable = $memcache - > forbinde (memcached_host, memcached_port) og på dette punkt har vi etableret en forbindelse til vores memcache server.det har været en fiasko, men vi ved, så tak for $cacheavailable, variable.,, lagring af data i vores lager, lad os dykke til lagring af data.vi vil tage et eksempel for at gøre tingene klarere - en netbutik.vi har et manuskript, edit_product.php, hvis formål er at redde et produkts data ind i vores database.hver enkelt af vores produkter er følgende oplysninger:,, id, navn og beskrivelse, pris, på et tidspunkt i vores edit_product.php, kode, løber vi en, indsæt eller ajourføre, sql spørgsmål, hvis formål er at skrive dette produkt er data til vores mysql database.det kunne se sådan her: //vi har valideret og renset vores data //vi er fri af alle risikobetonede char med mysql_real_escape_string() //nu ønsker vi at redde det ind i vores database $sql = "indsættes i produkter (id, navn og beskrivelse, pris) værdier ($id, $navn," $beskrivelse, $pris) "$querysuccess = mysql_query ($sql $db), som jeg nævnte, ønsker vi at opbevare vores data, både i vores mysql database og memcached server.her er, hvordan vi skal gå videre: //vi har valideret og renset vores data //vi er fri af alle risikobetonede char med mysql_real_escape_string() //nu vil vi skrive dem til vores database: $sql = "indsættes i produkter (id, navn og beskrivelse, pris) værdier ($id, - navn, $beskrivelse, $pris)" $querysuccess = mysql_query ($sql $db); //vi har skrevet vores data ind i vores database //- butik produktets navn, en beskrivelse af og prisen på vores lager //metoden "," fortæller vores memcached server opbevarer de data, der er forbundet med en bestemt nøgle, hvis ($querysuccess = = = sand) (//bygger vi en enestående nøgle, som vi kan bygge igen senere //vil vi bruge ordet "produkt" plus vores produkt er id (f.eks. "product_12")$nøgle = product_ ".$id; //vi opbevare et automatiseret system med vores produkt data $produkt = system ('id = > $id "navn" = > $navn, "beskrivelse" = > $beskrivelse "pris" = > $pris); //, og vi anmoder memcached opbevarer data $memcache - > sæt ($nøgle, $produkt)}, på dette punkt, både i vores database og lager, indeholder vores produkt data.,, hente data fra vores lager, i tilfælde af, at vores lager er utilgængelig, ønsker vi at falde tilbage til mysql.,, nu skal hente vores data.i det samme eksempel, lad os sige vores netbutik har et manuskript, product.php, der viser en bestemt vare.adgang til side, product.php?id = 12, vil vise det produkt, hvis id 'et er 12. på et eller andet tidspunkt i vores product.php, kode, løber vi en, udvælge, sql spørgsmål, hvis formål er at få et produkt er data fra vores mysql database.det kunne se sådan her: //vi har valideret og renset vores data //vi er fri af alle risikobetonede char med mysql_real_escape_string() //nu ønsker vi at læse fra vores database: $sql = "vælg id, navn og beskrivelse, pris fra produkter, hvor id =".$id. $queryresource = mysql_query ($sql $db). $produkt = mysql_fetch_assoc ($queryresource), som nævnt ovenfor, vil vi få vores data fra vores memcached server, hvis det er muligt, fordi det er hurtigere end at få den fra mysql.men hvis vores cache - serveren kan ikke opnås, eller hvis det ganske enkelt ikke lagre de data, vi har brug for, ønsker vi at falde tilbage til mysql.her er, hvordan vi skal gå videre: //nulstille vores $vare variable $produkt = ugyldig; //først kontrollere, at vores cache - serveren er tilgængelige //$cacheavailable variable blev igangsat, når vi sammen med vores lager server, hvis ($cacheavailable = = sand) (//bygger vi den nøgle, som vi i forbindelse med vores produkt data $nøgle = product_ ".$id; //nu fik vi oplysninger fra vores cache - serveren $produkt = $memcache - > kom ($centrale);} //har vi brug for adgang til mysql?hvis (!$produkt) {/i tilfælde af, at vi gør - - fordi vores $vare variabel er stadig for //vi har valideret og renset vores data //vi er fri af alle risikobetonede char med mysql_real_escape_string() //nu ønsker vi at læse fra vores database: $sql = "vælg id, navn og beskrivelse af produkter, hvis pris id =".$id. $queryresource = mysql_query ($sql $db). $produkt = mysql_fetch_assoc ($queryresource)}, på dette punkt, at vi har fået de oplysninger, vi har brug for.det var sandsynligvis gjort fra vores lager, men kan være mysql hvis lager var ikke fyldt eller ikke kunne benyttes af en eller anden grund, vi har set, hvordan memcached kan bruges til at fremskynde deres websted og begrænse deres database belastning.vores eksempel ovenfor, var baseret på sundhedsprogrammet og mysql, fordi disse techologies er almindeligt anvendt, men dette princip er universelle og virker det samme med mange andre teknologier: c /c + +, java, slange, ruby, perl,. netto, mysql, postgres, til, lua, lisp, kold fusion, ocaml og io er opført sammen med folkesundhedsprogrammet på den officielle memcached wiki., som jeg kort nævnte tidligere, memcached indeholder flere elementer end den simple og få de metoder, vi har set.to nyttige supplerende elementer er forøgelse /dekrement opdateringer og evne til at fastsætte en udløbsdato tid til en specifik lagrede data.begge dele er til rådighed i folkesundhedsprogrammet, sammen med et par andre, som du kan se i memcache dokumentation., have det sjovt at gennemføre dette på deres websteder, og nyd - fri - ydeevne forbedres.tak så meget for læse - og lad mig vide, hvis du har spørgsmål i bemærkningerne nedenfor.




Previous:
Next Page: