La campana.

Ci sono quelli che hanno letto questa notizia prima di te.
Iscriviti per ricevere articoli freschi.
E-mail
Nome
Cognome
Come vuoi leggere la campana
Senza spam

Il modulo MemCache fornisce comode interfacce procedurali e orientate agli oggetti al meccanismo di memorizzazione nella cache memcached. MemCache è un demone nella cache molto efficace, che è stato specificamente progettato per ridurre il carico sul database per applicazioni Web dinamiche ad alto caricamento e dinamico.

Il modulo MemCache fornisce anche un gestore di sessione. Di più informazioni dettagliate Su Memcached può essere trovato sul sito Memcached.org

In linea di principio, le descrizioni e le impostazioni di installazione in russo sono già pronte e puoi leggerlo.

Mantenimento A causa di mantenere la cache è possibile eventuali tipi di dati: sia variabili che oggetti e array, Ma non risorse!

Se qualsiasi oggetto ha una proprietà nella sua composizione - una risorsa, ad esempio una connessione al database, o contiene un altro oggetto con tali proprietà, questa situazione deve essere elaborata separatamente, ad esempio, ad esempio, sopravvalutare il metodo __Sleep () in cui questa risorsa ha bisogno per "uccidere" e il metodo __wakeup () in cui questa risorsa deve essere rianimata.

In effetti, tutti questi metodi possono essere suddivisi in 3 gruppi:

  1. Lavorare con valori
  2. Lavora con server e connessioni
  3. Ricevere le informazioni

Lavorare con valori

I metodi di questo gruppo ti permettono di fare quanto segue:

  • Imposta valori
  • Elimina questi valori
  • Sostituisci questi valori
  • Contattare questi valori per chiave
  • Gestisci la durata dei valori

Una coppia di metodi specifici per l'incremento e il decremento dei valori interi.

Memcache :: Set ()
Memcache :: Aggiungi ()

Consentire di impostare il valore, impostare la compressione e la vita per questo valore. L'unica differenza nel comportamento di questi metodi è il fatto che il metodo MemCache :: aggiungi - restituirà false se il valore con tale tasto è già installato.

bool Memcache :: Aggiungi.
Bool Memcache :: Set. (String $ Key, misto $ VAR [, INT $ FLAG [, INT $ scadenza]]

  • string $ Key: il tasto chiave che utilizzalo utilizziamo il valore.
  • mISTO $ VAR - VALUE.
  • Costanti
connetti ("localhost", 11211, 30); $ cache-\u003e Aggiungi ("myfirst", 1000, memcache_compresso, 15); $ cache-\u003e set ("mysecond", 2000, memcache_compressod, 15);

Memcache :: Get ()

Restituirà il valore richiesto o il falso in caso di guasto o se il valore con tale chiave non è ancora installato.

È possibile passare la matrice dei tasti dei valori, quindi MemCache :: Get restituirà anche un array, conterrà le coppie trovate del valore del tasto.

Avvertenze!

Se la barra inversa è presente nel nome chiave, allora i risultati del lavoro saranno imprevedibili!

Memcached e alcune ferite: secondo alcuni dati, lui (a volte) errori di overflow del buffer inclinazioneChe di volta in volta porta a sovrascrivere i dati [parziali] e, pertanto, rende impossibile diseriare le strutture, non dimenticare di verificare se, come risultato dell'array o della memcache risultante :: ottenere, il BOOL restituirà il BOOL, Dobule o Long, significa che è andato storto.

corda Memcache :: ottenere. (String $ Key [, INT & $ flags])
Vettore. Memcache :: ottenere. (Fay $ chiavi [, array e $ flags])

  • string $ Key è il tasto chiave o una serie di chiavi i cui valori devono essere ottenuti.
  • iNT $ FLAG - Lo scopo di questo parametro rimane un segreto per me. Ho provato a utilizzare alcuni valori interi, ma questo non ha dato alcun effetto. Sì, ed esempi sono principalmente dati senza il suo uso, da cui sono stato concluso: puoi lavorare perfettamente senza di esso :)
connetti ("localhost", 11211, 30); $ cache-\u003e Aggiungi ("myfirst", 1000, memcache_compresso, 15); $ cache-\u003e set ("mysecond", 2000, memcache_compressod, 15); Print_r ($ cache-\u003e get (array ("myfirst", "mysecond")));

Risultato:

Array (\u003d\u003e 1000 \u003d\u003e 2000)

Memcache :: Elimina ()

Rimuovere il valore dalla cache.

Commento:

Questo metodo non funziona sempre (dipende dalla versione del software)! Alla fine della pagina ci sono casi quando memcache :: Elimina funziona e quando no.

Bene, dalle opzioni stabili rimane solo per ripristinare i valori non necessari:

$ cache-\u003e set ("tre", null);

Solo meno - la chiave in questo caso non va da nessuna parte

corda Memcache :: Elimina. (String $ Key [, int $ timeout \u003d 0])

  • string $ Key è il valore chiave che desideri eliminare.
  • int $ Timeout: questo parametro è anche obsoleto e non supportato, il valore predefinito è 0 secondi. Non usare questa opzione.

Memcache :: Sostituisci ()

Sovrascrivere il valore esistente.

Memcache :: Sostituisci () dovrebbe essere usato per sostituire nessuno valore.. Nel caso in cui il valore con tale chiave non esistesse, MemCache :: Sostituisci () restituisce false. Altrimenti, MemCache :: Sostituisci () si comporta lo stesso di MemCache :: Set (). Puoi anche utilizzare la funzione MemCache_Replace ()

corda Memcache :: Sostituisci (String $ Key, misto $ VAR [, INT $ FLAG [, INT $ scadenza]]

  • string $ Key è la chiave il cui valore deve essere sostituito.
  • mISTO $ VAR - Nuovo valore.
  • int $ flag - Bandiera, che specifica, per utilizzare la compressione (qui e need zlib) per il valore salvato, è possibile utilizzare costanti
  • int $ scadisci - la durata del valore (cache). Se zero, quindi indefinitamente. È inoltre possibile utilizzare un timestamp o il numero di secondi, a partire dall'ora corrente, ma il numero di secondi non può superare i 2592000 (30 giorni).
connetti ("localhost", 11211, 30); $ cache-\u003e Aggiungi ("uno", 111, 0, 15); $ cache-\u003e Aggiungi ("Due", 222, 0, 15); $ cache-\u003e Aggiungi ("tre", 333, 0, 15); $ cache-\u003e sostituisci ("tre", 777); Print_r ($ cache-\u003e get (array ("uno", "due", "tre")); Array (\u003d\u003e 111 \u003d\u003e 222 \u003d\u003e 777)

Memcache :: Incremento ()

Aumenta il valore della chiave specificata al valore specificato. Se il valore del tasto specificato non è numerico e non può essere convertito in un numero, cambierà il suo valore sul valore specificato come secondo parametro. MemCache :: Increment () non crea un oggetto se non esiste.

Non consiglia di utilizzare MemCache :: Incremento () con i valori che sono stati compressi (installati con il flag MemCache_Compresso), perché allora ci saranno "sorprese" quando si tenta di ottenere questi valori con MemCache :: Get ()

Personalmente ho controllato e nessun problema è notato :)

int. Memcache :: incremento

  • string $ Key è la chiave il cui valore deve essere incrementato.
  • int $ Valore: il valore dell'incremento.
connetti ("localhost", 11211, 30); $ cache-\u003e set ("qualcuno", 10, 0, 5); $ cache-\u003e incremento ("qualcuno", 10, 0, 5); $ cache-\u003e incremento ("qualcuno", 10, 0, 5); Echo $ cache-\u003e Get ("qualcuno"); // sarà fuori 30

Memcache :: Decremo ()

Riduce il valore della chiave specificata al valore specificato. Simile a MemCache :: Increment (), il valore corrente dell'elemento viene convertito in un numerico e dopo tale diminuzione

int. Memcache :: decremento (String $ Key [, int $ Value \u003d 1])

  • string $ Key è la chiave il cui valore è decrementare.
  • iNT $ VALORE - VALUEMENTO DIMENMENTO.

Memcache :: Flush ()

Memcache :: Flush () rende non validi tutti i valori esistenti. MemCache :: Flush () Non realmente esonera risorse di memoria, ma segna solo tutti gli elementi obsoleti e la memoria occupata sarà disponibile per utilizzare nuovi valori. Puoi anche utilizzare la funzione MemCache_Flush ()

bool Memcache :: Flush. (vuoto)

L'esempio seguente non porterà nulla.

connetti ("localhost", 11211, 30); $ cache-\u003e set ("qualcuno", 111, 0, 5); $ cache-\u003e set ("Sometwo", 222, 0, 5); $ cache-\u003e set ("aquadre", 333, 0, 5); $ cache-\u003e flush (); // pulire la cache di stampa_r ($ cache-\u003e getwo ("qualcuno", "Sometwo", "SomeTreme")));

Lavora con server e connessioni.

Memcache può funzionare con un server che con un pool (set) di server.

Se si utilizza un solo server di servizio cache, è necessario creare un oggetto cache per inizializzare il lavoro e utilizzare il metodo Memcache :: Connect.

Se formare un pool di server, sarà necessario prima creare un oggetto cache, quindi dal metodo Memcache :: addserver. Aggiungi il numero richiesto di server ad esso.

Memcache :: Connect ()

Imposta la connessione con il server MemCached. La connessione che è stata aperta utilizzando MemCache :: Connect () verrà automaticamente chiusa alla fine dello script, ma è possibile chiuderlo esplicitamente utilizzando MemCache :: Chiudi (). È inoltre possibile utilizzare la funzione MemCache_Connect (). Controlla true in caso di completamento positivo o falso in caso di errore.

bool Memcache :: Connect.

connetti ("localhost", 11211, 30);

Memcache :: PConnect ()

Questo metodo è simile a MemCache :: Connect () con l'unica differenza che stabilisce una connessione permanente. Questa connessione non è chiusa alla fine dello script e chiama Memcache :: Chiudi (). È inoltre possibile utilizzare la funzione MemCache_PConnect (). Restituisce l'oggetto Memcache in caso di completamento positivo o falso in caso di errore.

misto. Memcache :: PConnect. (String $ host [, int $ port [, int $ timeout]])

  • Questo parametro può anche specificare altri trasporti come Unix: /// Path / to /memCached.Sock I.e. Utilizzare prese UNIX, in questo caso la porta deve essere impostata su 0.
  • Impostare questo parametro su 0 se si presume l'uso di prese.
  • int $ Timeout: limite in secondi, per connettersi al demone. Pensaci due volte prima di cambiare il valore predefinito di 1 secondo - puoi perdere tutti i vantaggi della cache se la connessione si verificherà troppo a lungo.
pConnect ("localhost", 11211, 30);

Memcache :: Chiudi ()

Chiude il collegamento al server MemCached. Questa funzione non chiude le connessioni costanti che si chiudono solo durante lo spegnimento / riavvio del server Web. È inoltre possibile utilizzare la funzione MemCache_CLose ().

bool Memcache :: Chiudi. (vuoto)

Memcache :: addserver ()

Aggiunge un server a un pool di connessioni. La connessione che è stata aperta utilizzando MemCache :: AddServer () verrà automaticamente chiusa alla fine dello script, è anche possibile chiuderlo manualmente con MemCache :: Chiudi (). È possibile utilizzare la funzione MemCache_ADD_Server () ()

Quando si utilizza MemCache :: AddServer (a differenza di MemCache :: Connect () e MemCache :: PConnect ()) La connessione di rete non è montata fino a quando non è necessaria. Pertanto, non ci sono costi generali quando aggiungono un gran numero di server in piscina, anche se non sono affatto richiesti.

Il pool del server offre una maggiore tolleranza agli errori. Eventuali errori di socket o errori memcached a livello del server (eccetto errori di memoria) causano la ridistribuzione delle risorse. Tali errori del client come aggiungendo una chiave esistente non causerà i guasti.

Commento:

Restituisce true in caso di completamento positivo o falso in caso di errore.

bool Memcache :: addserver. (Stringa $ host [, int $ port \u003d 11211 [, bool $ persistent [, int $ pesi [, int $ timeout [, int $ timeout [, int $ retry_interval [, bool $ Stato [, BOOL $ Failut_Callback [, INT $ TimeOutsms]]]] ]]]])

  • string $ host - host memcached. Questo parametro può anche specificare altri trasporti come Unix: /// Path / to /memCached.Sock I.e. Utilizzare prese UNIX, in questo caso la porta deve essere impostata su 0.
  • int $ PORT è una porta su cui Memcached ascolta la connessione. Impostare questo parametro su 0 se si presume l'uso di prese.
  • bOOL $ persistente: imposta l'uso di una connessione permanente. Predefinito per true.
  • int $ Peso: più, il più probabile che questo server verrà selezionato per la memorizzazione dei valori. Quelli. Questo è un tipo di "peso" del server in un pool condiviso, indirettamente questo è anche un carico stimato sul server.
  • int $ Timeout: limite in secondi, per connettersi al demone. Pensaci due volte prima di cambiare il valore predefinito di 1 secondo - puoi perdere tutti i vantaggi della cache se la connessione si verificherà troppo a lungo.
  • i timeouts $ string non sono descritti.

Ricevere le informazioni

MemCache :: GetExtedendedStats ()

Restituisce una matrice bidimensionale e associativa delle statistiche del server. Una serie di chiavi del server "host: porto". I valori contengono parametri di statistiche individuali. I server rifiutati avranno falso. Puoi anche utilizzare la funzione memcache_get_extended_stats ()

Commento:

Questa funzione è stata aggiunta a Memcache nella versione 2.0.0

vettore. Memcache :: GetExtenenDstats. ([String $ Type [, INT $ SLABID [, INT $ Limit \u003d 100]]]]

E ora scherza:

Il tipo di statistica "cachedump" è stata rimossa da Memcached per motivi di sicurezza

Un esempio di output di informazioni (chiamata senza parametri):

Array (\u003d\u003e array (\u003d\u003e 5179 \u003d\u003e 966862 \u003d\u003e 1.436505233 \u003d\u003e 1.4.5 \u003d\u003e 64 \u003d\u003e 160.302880 \u003d\u003e 483.975109 \u003d\u003e 6 \u003d\u003e 358080 \u003d\u003e 13 \u003d\u003e 15037476 \u003d\u003e 3501979 \u003d\u003e 46 \u003d\u003e 11507898 \u003d\u003e 3529578 \u003d\u003e 0 \u003d\u003e 0 \u003d\u003e 0 \u003d\u003e 0 \u003d\u003e 0 \u003d\u003e 0 \u003d\u003e 0 \u003d\u003e 0 \u003d\u003e 1643906080 \u003d\u003e 11298732744 \u003d\u003e 67108864 \u003d\u003e 4 \u003d\u003e 0 \u003d\u003e\u003e 4 \u003d\u003e 0 \u003d\u003e\u003e 3295454 \u003d\u003e 7623 \u003d\u003e 3501915 \u003d\u003e 0 \u003d\u003e 1825755) ...)

Memcache :: getserverstatus ()

Restituisce lo stato del server server / offline. Puoi anche usare la funzione memcache_get_server_status ()

Commento:

Questa funzione è stata aggiunta a Memcache nella versione 2.0.0

int. Memcache :: getserverstatus. (String $ host [, int $ port \u003d 11211])

  • string $ host - host memcached.
  • int $ PORT è una porta su cui Memcached ascolta la connessione.

Memcache :: getstats ()

Restituisce un array associativo con le statistiche del server. Un array di tasti corrisponde alle statistiche dei parametri e dei valori per il valore del parametro. Puoi anche usare la funzione memcache_get_stats ()

vettore. Memcache :: getstats.s ([stringa $ tipo [, int $ Slabid [, int $ limite \u003d 100]]]]

  • string $ Tipo - Tipo di statistica. Valori validi: (reset, malloc, mappe, cachedruzioni, lastre, articoli, dimensioni). Secondo le specifiche del protocollo Memcached, questi argomenti aggiuntivi "possono essere modificati per la comodità degli sviluppatori".
  • int $ Slabid viene utilizzato quando il primo parametro è impostato su "CacheDump" definisce il server che verrà utilizzato per eseguire il debug.
  • int $ Limit - Utilizzato quando il primo parametro è impostato su "CacheDud" limita il numero di record nella discarica.

Memcache :: GetVersion ()

Restituisce il numero di versione del server String - Server. Puoi anche usare la funzione memcache_get_version ().

corda Memcache :: GetVersion. (vuoto)

MemCache :: setCompressSthreshold ()

Fornisce la compressione automatica di valori di grandi dimensioni. Puoi anche usare la funzione. memcache_set_compress_threshold ()

Commento:

Questa funzione è stata aggiunta a Memcache nella versione 2.0.0

bool MemCache :: setCompressThreshold. (Int $ soglia [, galleggiante $ min_savings])

  • int $ soglia è la lunghezza minima del valore che si desidera comprimere automaticamente.
  • float $ MIN_SAVINGS - Imposta il coefficiente di compressione. Il valore specificato dovrebbe essere compreso tra 0 e 1. Il valore predefinito è 0.2 dà un minimo di risparmio di compressione del 20%.

Memcache :: SetServerparams ()

Cambia i parametri del server direttamente durante l'esecuzione. Puoi anche usare la funzione. memcache_set_server_params ().

Restituisce true in caso di completamento positivo o falso in caso di errore.

Commento:

Questa funzione è stata aggiunta a Memcache nella versione 2.0.0

bool Memcache :: SetServerparams. (String $ host [, int $ port \u003d 11211 [, int $ timeout [, int $ retry_interval \u003d false [, bool $ stato [, chiamata $ wind_callback]]]]]

  • string $ host - host memcached.
  • int $ PORT è una porta su cui Memcached ascolta la connessione.
  • int $ Timeout: limite in secondi, per connettersi al demone. Pensaci due volte prima di cambiare il valore predefinito di 1 secondo - puoi perdere tutti i vantaggi della cache se la connessione si verificherà troppo a lungo.
  • int $ retry_interval - Imposta quanto spesso il server rifiutato verrà intervistato, il valore predefinito è di 15 secondi. L'impostazione di questo parametro in -1 disabilita il reclutamento automatico.
  • bOOL $ STATO: segna il server come online. Impostazione di questo parametro in false e retry_interval -1 consente al server rifiuti è memorizzato nel pool del server attivo per non influenzare gli algoritmi di distribuzione delle chiavi. I ricorsi a questo server saranno distribuiti tra i restanti server disponibili. Per impostazione predefinita, il valore è vero, cioè il server dovrebbe essere considerato online.
  • cALCAbile $ Failut_Callback: consente all'utente di specificare la funzione di callback per avviare quando viene rilevato un errore. La funzione deve ricevere due parametri, il nome host e la porta dei server falliti.

Questo articolo è il carattere della "ambulanza". Una descrizione dettagliata di azioni specifiche che consentono di installare e configurare Memcached sul server.

Iniziamo con la definizione.

Memcached. - Software che implementa il servizio nella cache dei dati nella RAM basata su una tabella hash.

Dati iniziali:

  • VPS.sistema operativo Debian.;
  • il sito corrente a cui è possibile contattare FTP, SSH.

Iniziamo dall'ultimo oggetto. A causa della risorsa Internet corrente (o della sua somiglianza), possiamo semplicemente scoprire e rapidamente ciò che abbiamo installato (potrebbe essere che tra le altre cose troveremo memcached). Creare un file con il nome info.php, in cui scriverai:

Eseguire il codice contattando l'indirizzo http://example.com/info.php:

Se tra le altre cose trovi un record simile - significa che tutto è in ordine e il caso è già stato fatto. Altrimenti, riceveremo questo risultato seguendo le azioni descritte in questa pubblicazione.

Installazione del server Memcached.

Iniziamo a installare il team

Apt-get install memcached php5-memcache

Aspetto il completamento dell'installazione. Dopo aver controllato i risultati della squadra netstat.

Di conseguenza, otteniamo:

TCP 0 0 *: 11211 *: * Ascolta 13053 / Memcached

Come vediamo, il predefinito Memcached di predefinito "ascolta" la porta 11211. Di conseguenza, attraverso questa porta, chiunque può connettersi e utilizzare il nostro server MemCached. MUSCOTANTE DESIDERSI, Daremo un tale diritto al tuo server (localhost). Aprire il file /etc/memcached.conf attraverso il pannello di controllo o attraverso la console:

Vi /etc/memcached.conf.

Questo file contiene commenti dettagliati. Assicurati di conoscerli.

Aggiungi una stringa -L 127.0.0.1.

Riavvia il server MemCached con un comando:

/etc/init.d/memcached riavvio.

E controlla di nuovo:

Netstat -Tap |. GREP Memcached.

Di conseguenza, dobbiamo ottenere qualcosa del genere

TCP 0 0 localhost.Localdo: 11211 *: * Ascolta 13092 / Memcached

Ora memcached funziona solo sul server locale.

Installazione di MemCache.

Elenco dei comandi (versione di Memcache potrebbe differire!):

Apt-get install php5-dev libmemcache-dev pecl scaricare memcache tar xzvf memcache-2.2.6.tgz cd memcache-2.2.6 / phpize && ./configure --enable-memcache && crea moduli CP / Memcache.so / usr / Lib / php5 / 20060613 / echo "estensione \u003d memcache.so" \u003e\u003e /etc/php5/apache2/php.ini

Riavvia Apache:

Apachetem aggraziato.

Controlla lo script da noi in precedenza su http://example.com/info.php. Ora dobbiamo trovare memcache.

Controlla il lavoro memcached

Creare un file.Php file e lancialo.

connetti ("localhost", 11211) o uscita ("Impossibile connettersi al server Memcached"); $ versione \u003d $ memcache-\u003e getversion (); Echo "Server" S Versione: "$ versione".
\\ n "; $ tmp_object \u003d new stdclass; $ tmp_object-\u003e str_attr \u003d" test "; $ tmp_object-\u003e int_attr \u003d 123; $ memcache-\u003e set (" tasto ", $ tmp_object, false, 10) o morire (" risultato lasciare una voce in Memcached "); echo" scrivere dati sulla cache Memcached (i dati verranno memorizzati per 10 secondi)
\\ n "; $ get_result \u003d $ memcache-\u003e get (" tasto "); echo" dati registrati in memcached:
\\ n "; var_dump ($ get_result);?\u003e

Il risultato della scritta funziona:

Versione del server: 1.4.13 Scriviamo dati alla cache Memcached (i dati verranno memorizzati 10 secondi) Dati registrati in Memcached: Object (Stdclass) # 3 (2) (["STR_ATTR"] \u003d\u003e String (4) " Test "[" INT_ATTR "] \u003d\u003e INT (123))

È tutto così o quasi così? Quindi tutto è in ordine. In caso contrario, prova a ripetere le procedure.

Oggi ci occuperemo di un interessante meccanismo di cache dei dati: Memcache PHP.. Il meraviglioso lato di Memcahe è che possiamo cache tutti qualsiasi cosa, dalle query SQL, agli oggetti e alle altre strutture di dati.

Cos'è il memcache.

Memcache. - Non è facile la tecnologia o l'algoritmo di caching, prima di tutto è un programma server in esecuzione su un server Web. Se si utilizzano servizi di hosting, quindi prima di utilizzare la membrana nell'applicazione, è necessario assicurarsi che MemCaha sia disponibile. Puoi farlo usando la funzione phpinfo ().

Concetto

Assicurarsi che il server Memcahe sia disponibile per l'uso, facciamo conoscere il concetto di questo meccanismo di memorizzazione nella cache. L'uso più attraente di Memcaha PHP è che tutti i dati accessibili sono memorizzati nella memoria del server. Tale principio di archiviazione dei dati, non solo salva il tempo del processore sulla formazione di loro ancora e ancora, ma aumenta anche la velocità di accesso a loro.

Nella versione semplificata, il concetto di lavoro di Memcaha può essere impostato in questo modo: gli oggetti PHP utilizzati frequentemente vengono mantenuti e salvati nella RAM del server come un set di "tasto - oggetto", se necessario, i primi oggetti salvati vengono prelevati dal server Memoria passando numerose connessioni al database di prova e ai cicli. Nel caso in cui l'algoritmo PHCAHE PHP non rileva l'oggetto richiesto in memoria, l'oggetto richiesto viene creato nel modo consueto e persiste nella cache.

Come lavorare con MemCache Server in PHP

Per lavorare con il server Memcache, abbiamo bisogno di una delle librerie PHP PHP-MemCache o PHP-Memcached.

La scelta di questa o quella biblioteca dipende dalle esigenze individuali dello sviluppatore, in una parte più grande, sono molto simili tra loro, con la differenza che php-memcached. Fornisce alcune grandi opportunità per lavoro come:

  • Tasti di controllo di CAS TockKey
  • Callbacks (callbacks)
  • Metodo GetDelayed () Consente di ridurre il tempo di attesa, ripieni i tasti di lettura effettivi
  • Supporto del protocollo binario
  • La capacità di evitare la serializzazione usando i igbinari

Entrambi i moduli php-memcach. e php-memcached.non sono standard per PHP, ma disponibili nel repository PECL.

Nel caso del lavoro non sul proprio server, ma sul server host, non è necessario scegliere, tutto sarà già configurato.

Esempio di lavoro

Immediatamente presterò la vostra attenzione sul fatto che questo esempio funzionerà su PHP-Memcach e PHP-Memcached lo stesso.

MemCach PHP utilizza i seguenti metodi per lavorare con i dati:

  1. ottenere - per ottenere un oggetto dalla cache;
  2. impostare - oggetto di ingresso per chiave nella cache;
  3. aggiungi - registrazione di un oggetto nella cache se non è presente alcun tach;
  4. sostituisci - oggetto di ingresso alla cache, nel caso in cui la chiave sia già lì.

Darerò un primitivo esempio di utilizzare la memorizzazione nella cache utilizzando il server MemCache.

1
2
3
4
5
6
7

$ memcache \u003d nuovo memcache ();
$ Memcache -\u003e PConnect ("localhost", 3211); // In movimento. Per impostazione predefinita, è possibile utilizzare qualsiasi porta
$ Key \u003d "key_1";
$ valore \u003d array (1, 2, 3, 4, 5);
$ scadenza \u003d 600;
$ MemCache -\u003e Set ($ key, $ Value, 0, $ scadenza); // Mantieni il valore per 10 minuti
$ Memcache -\u003e Get ("Key_1"); // ricevi il precedente array registrato

Quando si utilizza immediatamente un server membro per più progetti, ricorda che i dati vengono registrati in una RAM. Ciò significa che se si scrivono nuovi valori da diversi progetti alla stessa chiave, quindi per entrambi il secondo valore sarà disponibile in memoria.

A seguito dell'applicazione delle informazioni fornite nel presente articolo, è possibile installare e configurare il server MemCached e l'estensione PHP desiderata per interagire con esso, così come il servizio di analisi dell'analisi dell'analisi di PhpMemCacheDADMN e del servizio statistico

L'installazione si verificherà in Debian con il server BEKENDA. Se si dispone di connessioni di funzionamento + PHP5-FPM, sostituire semplicemente nei comandi Apache2 a PHP5-FPM
Toolkit di funzionamento: file manager per il software di connessione con editor incorporato o putty.

Ora diciamo, abbiamo già questo sito di hosting http://example.com

Per cominciare, è necessario determinare come PHP è configurato (improvvisamente memcachiato già installato?)). Per fare ciò, alla radice del sito crea temporaneamente un file info.php con codice

Ora guarda http://example.com/info.php

Se vediamo che c'è un record simile, significa che tutto è in ordine, è impostata l'estensione PHP desiderata.
In caso contrario, significa che devi lavorare.

Come installare MemCached Server

Prima di installare, è necessario aggiornare il repository

Apt-Get Update && Apt-Get Upgrade

Ora installa il modulo Memcached e PHP sotto di esso

Apt-get install memcached php5-memcache

C'è un'installazione. Dopo averlo completato, controlla cosa è successo

Di conseguenza, vedremo qualcosa del genere

TCP 0 0 *: 11211 *: * Ascolta 13053 / Memcached

Ora è necessario riavviare Apache o PHP-FPM

Servizio Apache2 Riavvio.

Creazione di memcached.

Ora che il server è installato, deve essere fornito. Non è difficile e non ci vorrà molto tempo.

Chiudi Memcached dall'accesso dall'esterno

Come puoi vedere, memcached appeso alla porta predefinita 11211. Poiché Memcached non ha meccanismi di autenticazione integrati, si scopre che chiunque può connettersi dall'esterno e usarlo per i propri scopi. Per evitare ciò, è possibile chiudere la porta 11211 utilizzando un firewall o configurare il server Memcached in modo che possa essere utilizzato solo dall'host locale. L'ultimo modo è descritto di seguito.

  1. Aggiungi una stringa -L 127.0.0.1
  2. Riavviare Memcached.

    Servizio Riavvio Memcached.

    /etc/init.d/memcached riavvio.

E controlla di nuovo

Netstat -Tap |. GREP Memcached.

Di conseguenza, dobbiamo vederlo

TCP 0 0 localhost.Localdo: 11211 *: * Ascolta 13092 / Memcached

Inoltre, dopo tutte le modifiche, non dimenticare di riavviare Apache

Servizio Apache2 Riavvio.

Aumentare il volume della memoria di lavoro memcached

Per impostazione predefinita, Memcached è assegnato all'uso di 64 megabyte di RAM. Aumenterò fino a 1024, si procede dai parametri del tuo server

  1. Apri il file di configurazione VI /ETC/MemCached.conf
  2. Trova il valore -m 64
  3. Cambiarlo su -m 1024
  4. Riavvia il riavvio del servizio Memcached MemCached

Deposito di sessioni PHP in Memcached

Se vengono utilizzati diversi siti diversi da un server o cluster, possono intercettare ogni altra sessione e accedere ai propri account utente, che è un potenziale pericolo.

È possibile accelerare PHP, spostando la memorizzazione della sessione dall'HDD alla RAM utilizzando Memcached

È necessario sapere quale prolunga PHP usi, memcache o memcached. e chiarire ciò che hai, puoi usare phpinfo (), ci sono sottigliezza nelle impostazioni, fai attenzione

Metodo per l'espansione Memcache

  1. Apri /etc/php5/Mods-Available/memcache.ini.
  2. Aggiungi Session.Save_Handler \u003d MemCache Session.Save_Path \u003d "TCP: //127.0.0.1: 11211"

Metodo per l'espansione Memcached

  1. Apri /etc/php5/Mods-Available/memcached.ini.
  2. Aggiungi session.Save_Handler \u003d MemCached Session.Save_path \u003d "127.0.0.1:11211"
  3. Riavviare il riavvio di Apache Service Apache2

Controllare Phpinfo.

Ora devi controllare cosa abbiamo all'uscita. Per fare questo, apri la pagina con Phpinfo () e stiamo cercando nel codice Session.Save_Path nella colonna Valori locali. Il significato dovrebbe essere TCP: //127.0.0.1: 11211 o 127.0.0.1:11211 ..conf), e stiamo cercando
php_admin_value session.save_path.

A proposito, è anche possibile utilizzare la direttiva Php_Value per configurare l'intero server a livello globale, ma solo siti specifici. Per questo, puoi modificare.htaccess nella radice del tuo sito

Php_Value Session.Save_Handler "MemCache" Php_Value Session.Save_path "TCP: //127.0.0.1: 11211"

File di configurazione di funzionamento pronto Memcached

Puoi anche configurare tutto per le tue esigenze, il file di configurazione contiene commenti dettagliati:

# MemCached Default Config File # 2003 - Jay Bonci< > # Questo file di configurazione viene letto dallo script di avvio-memcached fornito come # parte della distribuzione Debian GNU / Linux. # Corri memcached come daemon. Questo comando è implicito e non è necessario per il # del daemon da correre. Guarda il LeggiMe.Debian fornito con questo pacchetto per ulteriori informazioni #. -d # log membeded "s output" s / var / log / membached logfile /var/log/memcached.log # Be verbose # -v # Sii ancora più verbose # -vv # Inizia con un tappo di 64 meg di memoria. esso "Il ragionevole, e il default del demone # Nota che il daemon crescerà a questa dimensione, ma non inizia a tenere questa memoria # molto memoria # in megabyte, assegnata alla cache. Default, 64 megabyte. # -M 64 -m 1024 # Porta su cui appenderà Memcached, predefinito 11211 -P 11211 # Esegui il daemon come root. L'avvio-memcached sarà predefinito per l'esecuzione come root se il comando n # -u è presente in questo file configurazione -u -u memcache # specificare quale indirizzo IP da ascoltare. Il valore predefinito è quello di ascoltare su tutti gli indirizzi IP # Questo parametro è una delle uniche misure di sicurezza che Memcached ha, quindi assicurati che l'ascolto di un'interfaccia firewall. -L 127.0.0.1 # limita il numero di connessioni in entrata simultanea. Il default del daemon è 1024 # # -c 1024 # bloccare tutto il blocco della memoria. Consultare la readme e la homepage prima di eseguire questa pagina # -k # Errore di ritorno quando la memoria è esaurita (anziché rimozione dei file) # -m # Massimizzare il file core) # -m # Limite # -r.

Installazione dell'estensione di memcache

I comandi sono mostrati di seguito, con cui è possibile installare Php Extension Memcache dalla console manualmente

Apt-get install php5-dev libmemcache-dev pecl scaricare memcache tar xzvf memcache-2.2.6.tgz cd memcache-2.2.6 / phpize && ./configure --enable-memcache && crea moduli CP / Memcache.so / usr / Lib / php5 / 20060613 / echo "estensione \u003d memcache.so" \u003e\u003e /etc/php5/apache2/php.ini

Riavvia Apache in modo che le modifiche entrino in vigore

Servizio Apache2 Riavvio.

Come controllare il lavoro memcached

Creare alla radice del file del sito memcachetest.php e installa il seguente codice

connetti ("localhost", 11211) o uscita ("Impossibile connettersi al server Memcached"); $ versione \u003d $ memcache-\u003e getversion (); Echo "Server" S Versione: "$ versione".
\\ n "; $ tmp_object \u003d new stdclass; $ tmp_object-\u003e str_attr \u003d" test "; $ tmp_object-\u003e int_attr \u003d 123; $ memcache-\u003e set (" tasto ", $ tmp_object, false, 10) o morire (" risultato lasciare una voce in Memcached "); echo" scrivere dati sulla cache Memcached (i dati verranno memorizzati per 10 secondi)
\\ n "; $ get_result \u003d $ memcache-\u003e get (" tasto "); echo" dati registrati in memcached:
\\ n "; var_dump ($ get_result);?\u003e

Ora rimane per verificare i risultati: http://example.com/memcachetest.php
Se tutto è fatto correttamente, vedrai qualcosa di sbagliato

phpmemCacheDadmin - Monitoraggio, statistiche e gestione memcato

phpmemCacheDadmin è un software che fornisce un'interfaccia web per il monitoraggio e la gestione del servizio Memcached su Linux. Consente di vedere nelle statistiche in tempo reale per tutti supportati dal server operativo: ottenere, impostare, eliminare, incrementare, decremento, recupero, sfrattato, cas, nonché statistiche del server: rete, posizione, versione del lavoro associata a grafici e server interno configurazione.

Installazione e configurazione di phpmemcachedadmin

Qui puoi andare in alcuni modi: allocare un dominio o un sottodominio separato al funzionamento di questo servizio. E puoi fare una sottodirectory sul desktop e mettere una password per questo o. Descriverò l'ultimo modo per installare la password sulla cartella come più semplice.

Quindi, diciamo che abbiamo un sito https: // sito

CD / VAR / WWW / Sito

Crea una directory e vai ad esso

Mkdir phpmemcachedadmin && cd phpmemcachedhedadmin

Scarica l'ultima versione della distribuzione

Wget http://phpmemcaceadmin.googlecode.com/files/phpmemcachedadmin-1.2.2-R262.tar.gz.

Disimballa e rimuovi l'archivio con la distribuzione

TAR -XVZF PHPMemCacheDadmin-1.2.2-R262.tar.gz && rm -rf phpmemmachedadmin-1.2.2-r262.tar.gz

Esporre ricorsivamente i giusti diritti di accesso nella directory corrente

Trova ./ -Type F -Exec CHMOD 0644 () \\; Trova ./ -Type D -Exec CHMOD 0755 () \\;

Authtype AuthName di base "Area privata" Authuserfile .htpasswd Richiede l'utente MemcachedManager

Creare.htpasswd.

Htpasswd -c .htpasswd memcachedmanager

Inserisci la tua password.

È tutto. Nome utente alla directory di MemcachedManager, se non l'hai cambiata. Apri https: // sito / phpmemmacheddmin (denaro del dominio da solo), inserisci il login / password e l'uso

Finalmente

Raccomando di conoscere l'articolo su Memcached. Destorna informazioni generali su di esso e alcune sottigliezze di lavoro.
È tutto. Se qualcosa è incomprensibile, fai domande nei commenti

Oggi ti presenterò un piccolo snippet di codice, che ti insegnerà a interagire con Memcache. Per installare MediaTemple sull'hosting hai bisogno di dati per ssh.

Chi usa Memcache?

Memcache è stato sviluppato da Danga interattivo per aumentare la velocità del portale di LiveJournal.com. Memcache riduce il tempo di download dal database quasi a zero, da cui la velocità di download è in crescita per gli utenti, la gestione accelerata delle risorse, ecc. Al momento, Facebook è il più grande utente del servizio Memcache. Dato il numero di persone che arrivano su Facebook quotidiano, ha quasi versato questo servizio - e per loro ha assegnato un posto separato.

Cos'è il memcache?

Bene, è diventato interessante? Memcache è un sistema di distribuzione di elementi memorizzati nella cache universale. Se non c'è nulla nella cache, la query è apportata al database e i risultati sono scritti in MemCache:

Memcache fornisce 5 funzioni:

  • get () - Estrai valore per chiave
  • set () - Imposta il valore
  • aggiungi () - Aggiunge la cache se non esiste
  • sostituisci () - Sostituisce la cache
  • flush () - Rimuove tutti i dati ingranditi

Il codice

Se hai installato Memcache, puoi iniziare a usarle. C'è un'opinione che un sacco di cache è cattivo. Non sono assolutamente in disaccordo con questo! Più veloce è il tuo sito - è meglio!

  • Le prime due righe effettuano una connessione con Memcache.
  • Successivamente segue lo script di connessione del database.
  • Quindi crea la chiave. Quando vogliamo effettuare i dati in Memcache, quindi dobbiamo trasferire 3 elementi da inserire: tasto, valore e durata della cache. La chiave è necessaria per accedere ai dati. In questo esempio puoi vedere cosa uso il tasto MD5 della query.
  • Quindi controlliamo se c'è una cache. Il controllo tornerà vero o falso. Se lo è, avremo accesso ad esso.
  • Se la cache non lo è, ci connettiamo al database e otteniamo il valore. Per creare una cache, usiamo la seguente espressione: $ memcache-\u003e set ($ key, $ riga, true, 20); $ Riga mantiene una serie di ciò che abbiamo ottenuto dalla base. 20 Questa è la durata della cache in pochi secondi.

$ Memcache \u003d nuovo memcache; $ MemCache-\u003e Connect ("127.0.0.1", 11211) o Die ("Impossibile connettersi"); Includere ("include / connect.php"); // Creare un tasto, quindi controllare la cache $ key \u003d md5 ("Seleziona * da memcached_test dove nome \u003d" Ashley "); $ GET_RESULT \u003d $ MemCache\u003e Get ($ key); se ($ get_result) (echo $ get_result ["nome"]; echo $ get_result ["username"]; echo "dati tirati dalla cache";) else (// Ottieni dati dal database e crea un cash $ query \u003d " Seleziona * da memcached_test dove nome \u003d "Ashley"; "$ Risultato \u003d mysql_query ($ query); $ riga \u003d mysql_fetch_array ($ risultato); stampa_r ($ riga); $ memcache\u003e set ($ key, $ riga, true, 20 ); // memorizza il risultato di 20 secondi di echo "dati tirati dal database";)

Questo è l'esempio più semplice di usare Memcache, ma spero che sia stato un buon inizio per te.

La campana.

Ci sono quelli che hanno letto questa notizia prima di te.
Iscriviti per ricevere articoli freschi.
E-mail
Nome
Cognome
Come vuoi leggere la campana
Senza spam