La cloche.

Il y a ceux qui ont lu cette nouvelle devant vous.
Abonnez-vous pour recevoir des articles frais.
E-mail
Nom
Nom de famille
Comment voulez-vous lire la cloche
Sans spam

Le module Memcache fournit des interfaces procédurales et orientées pratiques à un mécanisme de mise en cache mémached. Memcache est un démon de mise en cache très efficace, spécialement conçu pour réduire la charge de la base de données pour des applications Web dynamiques à charge élevée.

MemCache Module fournit également un gestionnaire de session. Suite des informations détaillées À propos de Memcached se trouve sur le site Web Memcached.org

En principe, les descriptions d'installation et les réglages en russe sont déjà prêts et vous pouvez le lire.

Garder en raison de garder en cache, vous pouvez tous les types de données: les deux variables et des objets et des tableaux, Mais pas des ressources!

Si un objet a une propriété dans sa composition - une ressource, telle qu'une connexion de base de données, ou contient un autre objet comportant de telles propriétés, cette situation doit être traitée séparément, par exemple, remplacer la méthode __sleep () dans laquelle cette ressource a besoin « tuer » et la méthode __wakeup () Dans lequel cette ressource doit être relancé.

En fait, toutes ces méthodes peuvent être divisées en 3 groupes:

  1. Travailler avec des valeurs
  2. Travailler avec des serveurs et des connexions
  3. Recevoir les informations

Travailler avec des valeurs

Les méthodes de ce groupe vous permettent de faire ce qui suit:

  • Définir des valeurs
  • Supprimer ces valeurs
  • Remplacer ces valeurs
  • Contactez ces valeurs par clé
  • Gérer la durée de vie des valeurs

Une paire de méthodes spécifiques d'incrément et de décrément de valeurs entières.

Memcache :: Set ()
Memcache :: Ajouter ()

Vous permet de définir la valeur, définissez la compression et la durée de vie de cette valeur. La seule différence dans le comportement de ces méthodes est le fait que la méthode Memcache :: Add - retourne false si la valeur avec la touche telle est déjà installé.

bool Memcache :: Ajouter.
Bool Memcache :: Ensemble. (String $ Clé, mixte Var $ [, drapeau $ int [, int $ fin]])

  • string $ clé - la clé de clé à l'aide de celle-ci, nous exploitons la valeur.
  • mixte $ var - valeur.
  • Constantes
connectez ("localhost", 11211, 30); $ cache-\u003e ajouter ("myfirst", 1000, memcache_compressé, 15); $ Cache-\u003e set ( "MySecond", 2000, MEMCACHE_COMPRESSED, 15);

Memcache :: get ()

Il retournera la valeur demandée ou FALSE en cas de défaillance ou si la valeur avec une telle clé n'est pas encore installée.

Vous pouvez passer le tableau des touches de valeurs, Memcache :: GET retourne également un tableau, il contiendra les paires trouvées de la valeur clé.

Mises en garde!

Si la barre oblique inverse est présente dans le nom de la clé, alors les résultats du travail seront imprévisibles!

Memcached et quelques plaies: selon certaines données, il (parfois) erreurs de débordement tampon sujetteCe qui, de temps à conduit de temps à écraser [partielle] données et, par conséquent, il est impossible de désérialiser structures, ne pas oublier de vérifier si, à la suite du tableau résultant ou Memcache :: get, le bool retournera le bool, Dobule ou longue, cela signifie que cela s'est mal passé.

chaîne Memcache :: get. (String $ Key [, indicateurs int & $ $])
Déployer. Memcache :: get. (Array $ Keys [, Array & $ drapeaux])

  • string $ Touche est la clé de clé ou une matrice de clés dont les valeurs doivent être obtenues.
  • int $ pavillon - Le but de ce paramètre reste un secret pour moi. J'ai essayé d'utiliser des valeurs entières, mais cela n'a donné aucun effet. Oui, et des exemples sont principalement donnés sans son utilisation, à partir duquel j'ai été conclu: vous pouvez travailler parfaitement sans cela :)
connectez ("localhost", 11211, 30); $ Cache-\u003e ajouter ( "MyFirst", 1000, MEMCACHE_COMPRESSED, 15); $ cache-\u003e set ("myseconde", 2000, memcache_compressé, 15); Print_r ($ cache-\u003e obtenir (tableau ("myfirst", "myseconde")));

Résultat:

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

Memcache :: Supprimer ()

Supprimez la valeur du cache.

Commenter:

Cette méthode ne fonctionne pas toujours (dépend de la version du logiciel)! À la fin de la page, il y a des cas lorsque Memcache :: Supprimer fonctionne et quand non.

Eh bien, des options stables ne reste que pour réinitialiser les valeurs inutiles:

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

Seulement moins - la clé dans ce cas ne va nulle part

chaîne Memcache :: Supprimer. (String $ Key [, int $ Timeout \u003d 0])

  • string $ Touche est la valeur clé que vous souhaitez supprimer.
  • int $ $ Timeout - Ce paramètre est également obsolète et non pris en charge, la valeur par défaut est 0 secondes. N'utilisez pas cette option.

Memcache :: Remplacer ()

Écrasez la valeur existante.

MemCache :: Remplacer () doit être utilisé pour remplacer aucune valeur. Si la valeur avec une telle clé n'existe pas, MemCache :: Remplacer () renvoie false. Sinon, Memcache :: Remplacer () se comporte de même que Memcache :: Set (). Vous pouvez également utiliser la fonction memcache_replace ()

chaîne Memcache :: remplacer (String $ Clé, mixte Var $ [, drapeau $ int [, int $ fin]])

  • string $ clé est la clé dont la valeur doit être remplacée.
  • mixte $ var - nouvelle valeur.
  • int $ $ drapeau - drapeau, qui spécifie, pour utiliser la compression (ici et besoin de zlib) pour la valeur enregistrée, vous pouvez utiliser des constantes
  • int $ expire - la durée de vie de la valeur (cache). Si zéro, puis indéfiniment. Vous pouvez également utiliser un horodatage ou un nombre de secondes, à partir de l'heure actuelle, mais le nombre de secondes ne peut pas dépasser 2592000 (30 jours).
connectez ("localhost", 11211, 30); $ cache-\u003e ajouter ("un", 111, 0, 15); $ cache-\u003e ajouter ("deux", 222, 0, 15); $ cache-\u003e ajouter ("trois", 333, 0, 15); $ cache-\u003e remplacer ("trois", 777); Print_r ($ cache-\u003e obtenir (tableau ("un", "deux", "trois"))); Array (\u003d\u003e 111 \u003d\u003e 222 \u003d\u003e 777)

Memcache :: incrément ()

Augmente la valeur de la clé spécifiée à la valeur spécifiée. Si la valeur de la clé spécifiée n'est pas numérique et ne peut pas être convertie en nombre, elle modifiera sa valeur à la valeur spécifiée comme deuxième paramètre. MemCache :: Incrément () Ne crée pas d'article si cela n'existe pas.

Ne vous recommande pas d'utiliser Memcache :: Incrément () avec les valeurs compressées (installées avec le drapeau Memcache_Comprimé), car il y aura des "surprises" lorsque vous essayez d'obtenir ces valeurs avec MemCache :: get ()

J'ai personnellement vérifié et aucun problème remarqua :)

int. Memcache :: incrément

  • string $ clé est la clé dont la valeur doit augmenter.
  • int $ valeur - la valeur de l'incrément.
connectez ("localhost", 11211, 30); $ cache-\u003e set ("quelqu'un", 10, 0, 5); $ cache-\u003e incrément ("quelqu'un", 10, 0, 5); $ cache-\u003e incrément ("quelqu'un", 10, 0, 5); Echo $ cache-\u003e obtenir ("quelqu'un"); // va sortir 30

Memcache :: Decreme ()

Réduit la valeur de la clé spécifiée à la valeur spécifiée. Semblable à Memcache :: Incrément (), la valeur actuelle de l'élément est convertie en numérique et après ces diminutions.

int. Memcache :: Décrément (Chaîne $ Key [, valeur int $ \u003d 1])

  • string $ clé est la clé dont la valeur est de décrémenter.
  • int $ VALEUR - Valeur de la démence.

Memcache :: Flush ()

MemCache :: Flush () rend toutes les valeurs existantes non valides. Memcache :: Flush () Ne pas vraiment exempter les ressources mémoire, mais marque uniquement tous les éléments comme obsolètes et la mémoire occupée sera disponible pour utiliser de nouvelles valeurs. Vous pouvez également utiliser la fonction memcache_flush ()

bool Memcache :: Flush. (annuler)

L'exemple ci-dessous n'apportera rien.

connectez ("localhost", 11211, 30); $ cache-\u003e set ("quelqu'un", 111, 0, 5); $ cache-\u003e ensemble ("somewo", 222, 0, 5); $ cache-\u003e set ("sometreme", 333, 0, 5); $ cache-\u003e flush (); // Nettoyez le cache de print_r ($ cache-\u003e GetWo ( "Quelqu'un", "Sometwo", "Sometreme")));

Travaillez avec des serveurs et des connexions.

MemCache peut fonctionner avec un serveur et un pool (ensemble) de serveurs.

Si vous utilisez un seul serveur de service de cache, vous devrez créer un objet de cache au travail initialize, et utiliser la méthode Memcache :: Connect.

Si vous allez former un pool de serveurs, il sera nécessaire d'abord créer un objet de cache, puis par la méthode Memcache :: addServer Ajoutez le nombre requis de serveurs.

Memcache :: Connect ()

Définit la connexion au serveur memcached. La connexion qui a été ouvert à l'aide Memcache :: Connect () sera fermée automatiquement à la fin du script, mais vous pouvez le fermer en utilisant explicitement Memcache :: Close (). Vous pouvez également utiliser la fonction Memcache_Connect (). Contrôle vrai dans le cas de réussite ou faux en cas d'erreur.

bool Memcache :: Connect.

connectez ("localhost", 11211, 30);

Memcache :: pconnect ()

Cette méthode est similaire à Memcache :: Connect () avec la seule différence qu'il établit une connexion permanente. Cette connexion n'est pas fermée à la fin du script et appelez Memcache :: Fermer (). Vous pouvez également utiliser la fonction memcache_pconnect (). Retourne Memcache objet en cas de réussite ou faux en cas d'erreur.

mixte. MemCache :: pconnect. (String $ hôte [, int $ Port [, int $ temps]]])

  • Ce paramètre peut également spécifier d'autres moyens de transport comme unix: /// chemin / vers /memcached.sock savoir Utilisez des sockets UNIX, dans ce cas, le port doit être réglé sur 0.
  • Définissez ce paramètre sur 0 si l'utilisation de sockets est supposée.
  • int $ $ Timeout - Limite en secondes, pour se connecter au démon. Réfléchissez à deux fois avant de changer la valeur par défaut de 1 seconde - vous pouvez perdre tous les avantages de la mise en cache si votre connexion se produit trop longtemps.
pconnect ("localhost", 11211, 30);

Memcache :: fermer ()

Ferme la connexion au serveur memcached. Cette fonctionnalité ne ferme pas les connexions constantes qui se ferment uniquement tout en éteignant / redémarrant le serveur Web. Vous pouvez également utiliser la fonction memcache_close ().

bool Memcache :: Fermer. (annuler)

Memcache :: addServer ()

Ajoute un serveur à un pool de connexions. La connexion qui a été ouvert à l'aide Memcache :: AddServer () sera fermée automatiquement à la fin du script, vous pouvez aussi fermer manuellement avec Memcache :: Close (). Vous pouvez utiliser la fonction MEMCACHE_ADD_SERVER ()

Lorsque vous utilisez MemCache :: AddServer (Contrairement à Memcache :: Connect () et Memcache :: PConnect ()) La connexion réseau n'est pas montée tant qu'elle n'est pas nécessaire. Ainsi, il n'y a pas de frais généraux lors de l'ajout d'un grand nombre de serveurs dans la piscine, même s'ils ne sont pas nécessaires du tout.

Pool de serveur fournit une tolérance de défaut supérieure. Toute erreur de socket, ou des erreurs Memcached au niveau du serveur (à l'exception des erreurs de mémoire) redistribution des causes des ressources. Ces erreurs clientes telles que l'ajout d'une clé existante ne provoqueront pas de défaillances.

Commenter:

Retourne vrai en cas de réussite ou de faux en cas d'erreur.

bool Memcache :: addServer (String $ Host [, int $ port \u003d 11211 [, BOOL $ PERSISTANTE [INT poids $ [, int $ timeout [, int $ retry_interval [, BOOL $ STATUS [, RACHETABLE $ FAILURE_CALLBACK [, int $ timeoutms]]]] ]]]]]

  • string $ hôte - hôte memcached. Ce paramètre peut également spécifier d'autres moyens de transport comme unix: /// chemin / vers /memcached.sock savoir Utilisez des sockets UNIX, dans ce cas, le port doit être réglé sur 0.
  • int $ Port est un port sur lequel MemCached écoute à la connexion. Définissez ce paramètre sur 0 si l'utilisation de sockets est supposée.
  • bOOL $ persistant - définit l'utilisation d'une connexion permanente. Défaut à true.
  • int $ Poids - plus le plus probable que ce serveur soit sélectionné pour stocker des valeurs. Ceux. C'est une sorte de « poids » du serveur dans une piscine commune, indirectement c'est aussi une charge estimée sur le serveur.
  • int $ $ Timeout - Limite en secondes, pour se connecter au démon. Réfléchissez à deux fois avant de changer la valeur par défaut de 1 seconde - vous pouvez perdre tous les avantages de la mise en cache si votre connexion se produit trop longtemps.
  • string $ TimeOutMS n'est pas décrit.

Recevoir les informations

Memcache :: getextenseStats ()

Renvoie une gamme de statistiques de serveur bidimensionnelle et associative. Un tableau de clés du serveur "Host: port". Les valeurs contiennent des paramètres de statistiques individuels. Les serveurs refusés auront de faux. Vous pouvez également utiliser la fonction memcache_get_extensed_stats ().

Commenter:

Cette fonctionnalité a été ajoutée à Memcache dans la version 2.0.0

déployer. Memcache :: getextensetstats. ([Chaîne $ Type [, int $ SLABID [, int $ limite \u003d 100]]]]

Et maintenant blagues:

Le type de statistiques "CacheDump" a été retiré de Memcached pour des raisons de sécurité

Un exemple de sortie d'informations (appel sans paramètres):

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 15037476 \u003d\u003e 3501979 \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 1 \u003d\u003e 0 \u003d\u003e 4 \u003d\u003e 0 \u003d\u003e 3295454 \u003d\u003e 7623 \u003d\u003e 3501915 \u003d\u003e 0 \u003d\u003e 1825755) ...)

Memcache :: getServerstatus ()

Renvoie l'état du serveur serveur / hors ligne. Vous pouvez également utiliser la fonction memCache_Get_Server_Status ()

Commenter:

Cette fonctionnalité a été ajoutée à Memcache dans la version 2.0.0

int. Memcache :: geterverstatus. (String $ hôte [, int $ Port \u003d 11211])

  • string $ hôte - hôte memcached.
  • int $ Port est un port sur lequel MemCached écoute à la connexion.

Memcache :: getStats ()

Renvoie une matrice associative avec des statistiques de serveur. Un tableau de clés correspond aux statistiques des paramètres et des valeurs de la valeur du paramètre. Vous pouvez également utiliser la fonction memcache_get_stats ()

déployer. Memcache :: getStats.s ([chaîne $ Type [, int $ Slabid [, int $ limit \u003d 100]]])

  • string $ Type - Type de statistiques. Valeurs valides: (réinitialisation, malloc, cartes, cachep, dalles, éléments, tailles). Selon la spécification du protocole MEMCACHÉ, ces arguments supplémentaires "peuvent être modifiés pour la commodité des développeurs".
  • int $ $ SLABID est utilisé lorsque le premier paramètre est défini sur "CacheDump" définit le serveur qui sera utilisé pour déboguer.
  • int $ limite - Utilisé lorsque le premier paramètre est défini sur "Cachedud" limite le nombre d'enregistrements dans le décharge.

Memcache :: getversion ()

Renvoie la chaîne - Numéro de version du serveur. Vous pouvez également utiliser la fonction memcache_get_version ().

chaîne Memcache :: getversion. (annuler)

Memcache :: SetCompressSthreshReshold ()

Fournit une compression automatique de grandes valeurs. Vous pouvez également utiliser la fonction. memcache_set_compress_threshold ()

Commenter:

Cette fonctionnalité a été ajoutée à Memcache dans la version 2.0.0

bool Memcache :: SetCompressemehold. (Seuil int $ [, flotteur $ min_savings])

  • int $ Seuil est la longueur minimale de la valeur que vous souhaitez compresser automatiquement.
  • flotteur $ min_savings - définit le coefficient de compression. La valeur spécifiée doit être comprise entre 0 et 1. La valeur par défaut est de 0,2 donne au moins 20% d'économies de compression.

Memcache :: Setserverparams ()

Modifications des paramètres du serveur directement pendant l'exécution. Vous pouvez également utiliser la fonction. mEMCACHE_SET_SERVER_PARAMS ().

Retourne vrai en cas de réussite ou de faux en cas d'erreur.

Commenter:

Cette fonctionnalité a été ajoutée à Memcache dans la version 2.0.0

bool Memcache :: setServerparams (String $ Host [, int $ port \u003d 11211 [, int $ timeout [, int $ retry_interval \u003d false [, bool $ status [, RACHETABLE FAILURE_CALLBACK $]]]]])

  • string $ hôte - hôte memcached.
  • int $ Port est un port sur lequel MemCached écoute à la connexion.
  • int $ $ Timeout - Limite en secondes, pour se connecter au démon. Réfléchissez à deux fois avant de changer la valeur par défaut de 1 seconde - vous pouvez perdre tous les avantages de la mise en cache si votre connexion se produit trop longtemps.
  • int $ redey_Interval - Définit la fréquence à laquelle le serveur refusé sera interviewé, la valeur par défaut est de 15 secondes. Réglage de ce paramètre en -1 désactive le recrutement automatique.
  • bOOL $ Status - marque le serveur comme en ligne. Réglage de ce paramètre dans FAUX et réessayer_Interval -1 permet au serveur refusable est stocké dans la piscine Active Server afin de ne pas affecter les algorithmes de la répartition des touches. Les recours à ce serveur seront distribués entre les serveurs disponibles restants. Par défaut, la valeur est vraie, c'est-à-dire que le serveur doit être considéré en ligne.
  • appelable $ échec_callback - permet à l'utilisateur de spécifier la fonction de rappel pour démarrer lorsqu'une erreur est détectée. La fonction doit recevoir deux paramètres, nom d'hôte et port des serveurs ont échoué.

Cet article est le caractère de "ambulance". Une description détaillée d'actions spécifiques vous permettant d'installer et de configurer Memcached sur le serveur.

Commençons par la définition.

Memcached - Logiciel qui implémente le service de mise en cache de données en RAM basé sur une table de hachage.

Donnée initiale:

  • VPS.système opérateur Debian.;
  • le site actuel auquel vous pouvez contacter FTP, SSH.

Commençons par le dernier article. En raison de la ressource Internet en cours d'exécution (ou de sa similarité), nous pouvons simplement savoir ce que nous avons installé (il se peut que, entre autres, nous trouverons Memcached). Créez un fichier avec le nom Info.php, dans lequel vous écrirez:

Effectuez le code en contactant l'adresse http://example.com/info.php:

Si, entre autres choses, vous trouverez un enregistrement similaire - cela signifie que tout est en ordre et que le cas a déjà été fait. Sinon, nous recevrons ce résultat après les actions décrites dans cette publication.

Installation du serveur memcached

Commençons par installer l'équipe

Apt-get installer memcached php5-memcache

En attente de l'achèvement de l'installation. Après avoir vérifié les résultats par l'équipe netstat.

En conséquence, nous obtenons:

TCP 0 0 *: 11211 *: * Écoutez 13053 / Memcached

Comme nous le voyons, la valeur mmcached par défaut par défaut "Listene" Port 11211. Par conséquent, via ce port, tout le monde peut connecter et utiliser notre serveur Memcached. Mustocat vous-même, nous donnerons un tel droit à votre serveur (localhost). Ouvrez le fichier /etc/memcached.conf dans le panneau de commande ou via la console:

VI /etc/MemCached.conf.

Ce fichier contient des commentaires détaillés. Assurez-vous de vous familiariser avec eux.

Ajouter une chaîne -l 127.0.0.1.

Redémarrez le serveur Memcached avec une commande:

/etc/init.d/Memcached redémarrage.

Et vérifiez à nouveau:

Netstat -Tap | Grep memcached.

En conséquence, nous devons obtenir quelque chose comme

TCP 0 0 localhost.localdo: 11211 *: * Écouter 13092 / Memcached

Maintenant Memcached fonctionne uniquement sur le serveur local.

Installation de MemCache

Liste des commandes (version de MemCache peut différer!):

Apt-get install php5-DEV libmemcache-DEV PECL TÉLÉCHARGER MEMCACHE RAT xzvf MEMCACHE-2.2.6.TGZ CD-Memcache 2.2.6 / phpize && ./configure --enable-Memcache CP Modules && Marque / Memcache.So / USR / LIB / PHP5 / 20060613 / ECHO "Extension \u003d memcache.so" \u003e\u003e /etc/php5/apache2/php.ini

Redémarrez Apache:

Apachetem gracieux.

Vérifiez le script en nous plus tôt à http://example.com/info.php. Maintenant, nous devons y trouver Memcache.

Vérifiez le travail MEMCACHED

Créez un fichier résultat.php et lancez-le.

connectez ("localhost", 11211) ou sortie ("impossible de se connecter au serveur memcached"); $ version \u003d $ memcache-\u003e getversion (); Echo "Server" S Version: "$ version".
\\ N "; $ TMP_Object \u003d new StdClass; $ TMP_Object-\u003e str_attr \u003d" test "; $ TMP_Object-\u003e int_attr \u003d 123; $ memcache-\u003e set (" clé "$ tmp_object, faux, 10) ou DIE (" Il avéré laisser une entrée dans Memcached « ); echo » les données d'écriture dans le cache memcached (les données seront stockées pendant 10 secondes)
\\ N "; $ get_result \u003d $ memcache-\u003e get (" clé "); echo" données enregistrées dans Memcached:
\\ n "; var_dump ($ get_result);?\u003e

Le résultat du script fonctionne:

Serveur "S Version: 1.4.13 Nous écrire des données dans le cache memcached (les données seront stockées 10 secondes) Les données enregistrées dans Memcached: Object (stdClass) # 3 (2) ([" Str_attr "] \u003d\u003e string (4)" test "[" int_attr "] \u003d\u003e int (123))

Est-ce que tout est si ou presque? Alors tout est en ordre. Sinon, essayez de répéter les procédures.

Aujourd'hui, nous traiterons d'un mécanisme intéressant de mise en cache de données: Memcache php.. Le merveilleux côté de Memcahe est que nous pouvons tout mettre en cache tout ce qui concerne les requêtes SQL, aux objets et à toute autre structure de données.

Qu'est-ce que Memcache

Memcache. - Il n'est pas une technologie facile ou un algorithme de mise en cache, tout d'abord, il est un programme de serveur en cours d'exécution sur un serveur web. Si vous utilisez des services d'hébergement, alors avant d'utiliser la Membrade dans l'application, vous devez vous assurer que MemCahe est disponible. Vous pouvez le faire à l'aide de la fonction phpinfo ().

Concept

Assurez-vous que MemCahe Server est disponible pour une utilisation, demandons-vous au concept de ce mécanisme de mise en cache. L'utilisation la plus attrayante de MemCahe PHP est que toutes les données consultées sont stockées dans la mémoire du serveur. Un tel principe de stockage de données, non seulement économise du temps de processeur sur la formation d'eux encore et encore, mais augmente également la vitesse de l'accès.

Dans la version simplifiée, le concept de travail MEMCAHE peut être défini de cette manière: Les objets PHP fréquemment utilisés sont conservés et enregistrés dans la RAM du serveur en tant qu'ensemble de "clé-clé", si nécessaire, les premiers objets sont prélevés à partir du serveur Mémoire en passant de nombreuses connexions à la base de données et cycles de test. Dans le cas où l'algorithme PHP MemCahe ne détecte pas l'objet demandé en mémoire, l'objet requis est créé de la manière habituelle et persiste dans le cache.

Comment travailler avec le serveur MEMCACHE dans PHP

Pour travailler avec Server Memcache, nous avons besoin d'une des bibliothèques PHP PHP-MEMCACHACHE ou PHP-MEMCACHED.

Le choix de cette ou de cette bibliothèque dépend des besoins individuels du développeur, dans une plus grande partie, ils sont très similaires aux autres, avec la différence que php-memcaché Fournit de grandes opportunités de travail telles que:

  • Touches de Version de CAS TOCKEY
  • Callbacks (rappels)
  • Méthode getDelayed () vous permet de réduire le temps d'attente, de reporter les clés de lecture réelles
  • Support de protocole binaire
  • La capacité d'éviter la sérialisation à l'aide d'IGBinary

Les deux modules php-memcach et php-memcachéNe sont pas standard pour PHP, mais disponibles dans le référentiel PECL.

Dans le cas du travail non sur son propre serveur, mais sur le serveur hôte, vous n'avez pas à choisir, tout sera déjà configuré.

Exemple de travail

Immédiatement, je vais porter votre attention sur le fait que cet exemple fonctionnera sur PHP-MemCach et PHP-Memcached identique.

MEMCACH PHP utilise les méthodes suivantes pour travailler avec des données:

  1. obtenez - pour obtenir un objet du cache;
  2. définir l'objet d'entrée par clé dans le cache;
  3. ajouter - Enregistrement d'un objet dans le cache s'il n'y a pas de telle clé de cette clé;
  4. remplacer - Objet d'entrée au cache au cas où la touche est déjà là.

Je vais donner un exemple primitif d'utiliser la mise en cache à l'aide du serveur MemCache.

1
2
3
4
5
6
7

$ memcache \u003d nouveau memcache ();
$ Memcache -\u003e pconnect ("localhost", 3211); // En mouvement. Par défaut, vous pouvez utiliser n'importe quel port
$ Clé \u003d "key_1";
$ valeur \u003d tableau (1, 2, 3, 4, 5);
$ expire \u003d 600;
$ Memcache -\u003e Ensemble ($ clé, valeur de $, 0, $ expire); // garde la valeur pendant 10 minutes
$ Memcache -\u003e obtenir ("key_1"); // obtenir le tableau précédent enregistré

Lorsque vous utilisez un serveur de membre immédiatement pour plusieurs projets, rappelez-vous que les données sont enregistrées dans une RAM. Cela signifie que si vous écrivez de nouvelles valeurs à partir de différents projets à la même clé, alors pour les deux la dernière valeur seront disponibles en mémoire.

En raison de l'application des informations données dans cet article, vous pouvez installer et configurer le serveur Memcached et l'extension PHP désiré pour interagir avec elle, ainsi que le service d'analyse d'analyse des PHPMEMCACHEDADMN et des statistiques

L'installation se produira sous Debian avec le serveur Bekenda. Si vous avez un travail + connexions php5-FPM, remplacez simplement les commandes Apache2 à php5-FPM
Boîte à outils de travail: Gestionnaire de fichiers pour la connexion du logiciel avec l'éditeur intégré ou Putty.

Maintenant, nous allons dire, nous avons déjà ce site d'hébergement http://example.com

Pour commencer, vous devez déterminer comment PHP est configuré (soudainement memcached déjà installé?)). Pour ce faire, à la racine du site crée temporairement un fichier info.php avec code

Maintenant, regardez ce http://example.com/info.php

Si nous voyons qu'il ya un dossier semblable, cela signifie que tout est en ordre, l'extension PHP désirée est réglée.
Sinon, cela signifie que vous devez travailler.

Comment installer un serveur memcached

Avant d'installer, vous devez mettre à jour le référentiel.

Apt-get update && apt-get mise à niveau

Maintenant installez le module Memcached et PHP sous celui-ci

Apt-get installer memcached php5-memcache

Il y a une installation. Après avoir terminé, vérifiez ce qui s'est passé

En conséquence, nous verrons quelque chose comme

TCP 0 0 *: 11211 *: * Écoutez 13053 / Memcached

Maintenant, vous devez redémarrer Apache ou PHP-FPM

Service Apache2 Redémarrer

Configuration Memcached

Maintenant que le serveur est installé, il doit être fourni. Ce n'est pas difficile et ne prendra pas beaucoup de temps.

Fermer memcached de l'accès de l'extérieur

Comme vous pouvez le voir, Memcached accroché sur le port par défaut 11211. Étant donné que Memcached n'a pas de mécanismes d'authentification intégrés, il se trouve que tout le monde peut se connecter à l'extérieur et de l'utiliser pour leurs propres fins. Pour éviter cela, vous pouvez fermer le port 11211 à l'aide d'un pare-feu ou configurer le serveur Memcached afin qu'il ne puisse être utilisé que chez l'hôte local. La dernière façon est décrite ci-dessous.

  1. Ajouter une chaîne -l 127.0.0.1
  2. Redémarrer Memcached

    Service Memcached Redémarrez.

    /etc/init.d/Memcached redémarrage.

Et vérifier à nouveau

Netstat -Tap | Grep memcached.

En conséquence, nous devons voir cela

TCP 0 0 localhost.localdo: 11211 *: * Écouter 13092 / Memcached

En outre, après toutes les modifications, n'oubliez pas de redémarrer Apache

Service Apache2 Redémarrer

Augmenter le volume de la mémoire de travail Mémached

Par défaut, Memcached est attribué à l'utilisation de 64 mégaoctets de RAM. Je vais augmenter à 1024, vous passez des paramètres de votre serveur

  1. Ouvrez le fichier de configuration vi /etc/memcached.conf
  2. Trouver la valeur -M 64
  3. Changez-le sur -M 1024
  4. Redémarrez le service memcached Memcached Redémarrer

Séances PHP Stockage dans Memcached

Si plusieurs sites sont utilisés par un serveur ou un cluster, ils peuvent intercepter les autres sessions et accéder à leurs comptes d'utilisateurs, ce qui constitue un danger potentiel.

Vous pouvez accélérer PHP, déplacé le stockage de la session du disque dur à l'aide de Memcached

Vous devez savoir quelle extension PHP vous utilisez, memcache ou memcached. et clarifiez ce que vous avez, vous pouvez utiliser phpinfo (), il existe une subtilité dans les paramètres, soyez prudent

Méthode de memcache d'expansion

  1. Ouvrir /etc/php5/mods-Available/MemCache.ini.
  2. Ajouter session.save_handler \u003d memcache session.save_path \u003d "TCP: //127.0.0.1: 11211"

Méthode d'expansion memcached

  1. Ouvrir /etc/php5/mods-Available/MemCached.ini.
  2. Ajouter session.save_handler \u003d session memcached.save_path \u003d "127.0.0.1:11211"
  3. Redémarrer Apache Service Apache2 Redémarrez

Vérifiez phpinfo.

Maintenant, vous devez vérifier ce que nous avons à la sortie. Pour ce faire, ouvrez la page avec phpinfo () et nous recherchons dans le code Session.Save_Path dans la colonne Valeurs locales. La signification doit être TCP: //127.0.0.1: 11211 ou 127.0.0.1:11211 ..conf), et nous recherchons
php_admin_value session.save_path

À propos, vous pouvez également utiliser la directive PHP_Value pour configurer tout le serveur globalement, mais uniquement des sites spécifiques. Pour cela, vous pouvez éditer.htaccess à la racine de votre site

Php_value session.save_handler "Memcache" php_value session.save_path "TCP: //127.0.0.1: 11211"

Fichier de configuration de travail prêt à l'emploi MEMCACHED

Vous pouvez également tout configurer pour vos besoins, le fichier de configuration contient des commentaires détaillés:

Fichier de configuration # 2003 # Memcached par défaut - Jay Bonci< > # Ce fichier de configuration est lu par le script Start-MemCached fourni sous forme de # partie de la distribution de Debian GNU / Linux. # Run Memcached en tant que démon. Cette commande est implicite et n'est pas nécessaire pour que le démon # soit exécuté. Voir le Readme.debian qui est livré avec ce paquet pour plus d'informations #. -d # log Memcached "S Sortie Sortie TO / Var / VAR / LOG / MEMBACHED LOGFILE /VAR/LOG/MEMCACHED.LOG # BE VERBOSE # -V # Soyez encore plus Verbose # -VV # Commencez par un capuchon de 64 mégots de mémoire. Il "S raisonnable et le daemon par défaut Notez que le démon deviendra à cette taille, mais ne démarre pas en tenant compte de cette mémoire # # mémoire # en mégaoctets, qui est affecté à la mise en cache. Par défaut, 64 mégaoctets. # -M 64 -M 1024 # Port sur lequel se bloquera Memcached, par défaut 11211 -P 11211 # exécutez le démon comme racine. Le Start-MemCached sera par défaut d'exécuter en tant que root si la commande n ° # -U est présente dans ce fichier de configuration -u Memcache # Spécifiez quelle adresse IP à écouter. La valeur par défaut est à écouter sur toutes les adresses IP # Ce paramètre est l'une des seules mesures de sécurité que MemCached a, alors assurez-vous que # IT Ecouter sur une interface pare-feu. -L 127.0.0.1 # Limitez le nombre de connexions entrantes simultanées. La valeur par défaut du démon est 1024 # # -c 1024 # verrouille toute la mémoire paginée. Consultez le fichier réveil et la page d'accueil avant de faire cette erreur de retour # -K # lorsque la mémoire est épuisée (plutôt que de supprimer des iTM) # -M # maximiser le fichier de base Limite # -r.

Installation de l'extension MemCache

Les commandes sont présentées ci-dessous, avec laquelle vous pouvez installer manuellement la console de rallonge PHP de la console.

Apt-get install php5-DEV libmemcache-DEV PECL TÉLÉCHARGER MEMCACHE RAT xzvf MEMCACHE-2.2.6.TGZ CD-Memcache 2.2.6 / phpize && ./configure --enable-Memcache CP Modules && Marque / Memcache.So / USR / LIB / PHP5 / 20060613 / ECHO "Extension \u003d memcache.so" \u003e\u003e /etc/php5/apache2/php.ini

Redémarrez Apache pour que les changements entrent en vigueur

Service Apache2 Redémarrer

Comment vérifier le travail memcached

Créer à la racine du fichier de site memcachetest.php et installez le code suivant

connectez ("localhost", 11211) ou sortie ("impossible de se connecter au serveur memcached"); $ version \u003d $ memcache-\u003e getversion (); Echo "Server" S Version: "$ version".
\\ N "; $ TMP_Object \u003d new StdClass; $ TMP_Object-\u003e str_attr \u003d" test "; $ TMP_Object-\u003e int_attr \u003d 123; $ memcache-\u003e set (" clé "$ tmp_object, faux, 10) ou DIE (" Il avéré laisser une entrée dans Memcached « ); echo » les données d'écriture dans le cache memcached (les données seront stockées pendant 10 secondes)
\\ N "; $ get_result \u003d $ memcache-\u003e get (" clé "); echo" données enregistrées dans Memcached:
\\ n "; var_dump ($ get_result);?\u003e

Il reste maintenant à vérifier les résultats: http://example.com/memcachetest.php
Si tout est fait correctement, vous verrez quelque chose de mal

phpMemCachedAdmin - Surveillance, statistiques et gestion mématique

pHPMemCachedAdmin est un logiciel qui fournit une interface Web pour la surveillance et la gestion du service Memcached sur Linux. Vous permet de voir en temps réel statistiques pour tous pris en charge par le serveur d'exploitation: obtenir, définir, supprimer, augmenter, décrémenter, récupéré, expulsions, CAS, ainsi que statistiques de serveur: réseau, position, version de travail associée aux graphiques et au serveur interne configuration.

Installation et configuration de phpMemCachedAdmin

Ici, vous pouvez aller quelques façons: allouer un domaine distinct ou un sous-domaine au fonctionnement de ce service. Et vous pouvez faire un sous-répertoire sur le bureau et mettre un mot de passe pour cela ou. Je vais décrire la dernière façon d'installer le mot de passe sur le dossier comme plus simple.

Donc, disons que nous avons un site https: // site

CD / VAR / WWW / SITE

Créez un répertoire et allez-y

Mkdir phpmemcachedadmin && cd phpmemcachedhedminmin

Téléchargez la dernière version de la distribution

Wget http://phpmemcaceadmin.googlecode.com/files/phpmemcachedadmin-2.2.2-r262.tar.gz.

Déballez et supprimez l'archive avec la distribution

TAR -XVZF PHPMEMCACHEDADMIN-1.2.2-R262.TAR.GZ && RM -RF PHPMEMCachedAdMin-1.2.2-R262.TAR.GZ

Exposez de manière récursive les droits d'accès appropriés dans le répertoire actuel

Trouver ./ -type f -exec chmod 0644 () \\; Trouver ./ -type d -exec chmod 0755 () \\;

AuthType Basic Authname "Zone privée" Authuserfile .HTPASSWD nécessite l'utilisateur MemCachedManager

Créer.htpasswd.

HTPASSWD -C .HTPASSWD MEMCACHEDMANAGER

Tapez votre mot de passe.

C'est tout. Nom d'utilisateur au répertoire MemcachedManager, si vous ne l'avez pas changé. Ouvrez HTTPS: // Site / PhpMemCacheddmin (Domaine Argent par vous-même), entrez le login / mot de passe et utilisez.

Pour terminer

Je recommande de faire connaissance avec l'article sur Memcached. Il décrit des informations générales à ce sujet et certaines subtilités de travail.
C'est tout. Si quelque chose est incompréhensible, posez des questions dans les commentaires

Aujourd'hui, je vous présenterai un petit extrait de code, qui vous apprendra à interagir avec MemCache. Afin d'installer MediateMle sur l'hébergement, vous avez besoin de données pour SSH.

Qui utilise Memcache?

Memcache a été développé par DANGA Interactive afin d'accroître la vitesse du portail LiveJournal.com. MemCache réduit la durée de téléchargement de la base de données à presque à zéro, à partir de laquelle la vitesse de téléchargement augmente pour les utilisateurs, la gestion des ressources accélérée, etc. Au moment du moment Facebook est le plus gros utilisateur du service MemCache. Compte tenu du nombre de personnes arrivant sur Facebook quotidiennement, il a presque versé ce service - et pour eux alloué un endroit séparé.

Qu'est-ce que MemCache?

Eh bien, il est devenu intéressant? MemCache est un système de distribution d'éléments mis en cache universelle. S'il n'y a rien dans le cache, la requête est faite à la base de données et les résultats sont écrits dans MemCache:

MemCache fournit 5 fonctions:

  • obtenir () - Extraits de la valeur par clé
  • sET () - Définit la valeur
  • ajouter () - ajoute du cache s'il n'existe pas
  • remplacer () - remplace le cache
  • flush () - Supprime toutes les données zoomées

Le code

Si vous avez installé MemCache, vous pouvez commencer à les utiliser. Il y a une opinion que beaucoup de cache sont mauvaises. Je suis absolument en désaccord avec ça! Plus votre site est chargé, mieux c'est!

  • Les deux premières lignes font une connexion à MemCache.
  • Suivant suit le script de connexion de base de données.
  • Puis créez la clé. Lorsque nous voulons placer les données dans MemCache, nous devons ensuite transférer 3 éléments pour insérer: la durée de vie de la clé, de la valeur et du cache. La clé est nécessaire pour accéder aux données. Dans cet exemple, vous pouvez voir ce que j'utilise la clé MD5 de la requête.
  • Ensuite, nous vérifions s'il y a une cache. Vérifiez nous retournera vrai ou faux. S'il est, nous y accédons.
  • Si le cache n'est pas, alors nous nous connectons à la base de données et obtenez la valeur. Pour créer un cache, nous utilisons l'expression suivante: $ MEMCACHE-\u003e SET ($ clé, $ ligne, vrai, 20); $ Ligne garde un tableau de ce que nous avons eu de la base. 20 C'est la durée de vie dans la cache en quelques secondes.

$ Memcache \u003d nouveau memcache; $ Memcache-\u003e connect ("127.0.0.1", 11211) ou mourir ("Impossible de connecter"); Inclure ("Inclus / Connect.PHP"); // Créez une clé, puis cochez la case Cache $ clé \u003d MD5 ("SELECT * de MemCached_TEST où nom \u003d" Ashley "); $ get_result \u003d $ memcache\u003e obtenir ($ clé); Si ($ get_result) (echo $ get_result ["nom"]; écho $ get_result ["Nom d'utilisateur"]; écho "Données tirées du cache";) Sinon (// Obtenir des données de la base de données et créez une clé USD $ ". Sélectionnez * à partir de Memcached_test où Name \u003d "Ashley"; "Résultat $ \u003d mysql_query ($ requis); $ Row \u003d mysql_fetch_array ($ Résultat); $ MEMCACHE\u003e SET ($ RILS, VRAI, 20 ); // stocke le résultat de 20 secondes d'écho "Données tirées de la base de données";)

C'est l'exemple le plus facile d'utiliser Memcache, mais j'espère que c'était un bon départ pour vous.

La cloche.

Il y a ceux qui ont lu cette nouvelle devant vous.
Abonnez-vous pour recevoir des articles frais.
E-mail
Nom
Nom de famille
Comment voulez-vous lire la cloche
Sans spam