1: OUI. Et je vous recommande fortement de stocker les sessions PHP dans Memcached. Voici pourquoi:
Memcached est idéal pour le rangement de petits morceaux de données qui sont souvent accessibles par la base de données et système de fichiers.
Memcached a été conçu spécifiquement pour les sessions. Il était à l'origine le fruit de l'imagination du développeur en chef de livejournal.com et, plus tard, également utilisé pour mettre en cache le contenu des messages. Le bénéfice est immédiat: la plupart de l'action se déroulait dans la mémoire. Temps de chargement de Page grandement améliorée.
Heureusement, PHP et Apache ont une mise en œuvre simple pour gérer les sessions avec Memcached. Il suffit de l'installer avec quelques commandes shell et
changer votre php.paramètres ini quelque chose de similaire à:
(prise de http://www.dotdeb.org/2008/08/25/storing-your-php-sessions-using-memcached/)
session.save_handler = memcache
; change server:port to fit your needs...
session.save_path="tcp://server:port?persistent=1&weight=1&
timeout=1&retry_interval=15"
La clé est la session.save_path
Il n'a plus de point à un parent chemin d'accès du fichier sur votre serveur.
APC a été mentionné - APC pour la mise en cache de .php les fichiers utilisés par le programme. APC, Memcached permettra de réduire les IO de façon signicative et laisser Apache libre pour servir de ressources,tels que des images, plus rapide.
2: Aucun
3: Les fondamentaux de l'inconvénient de l'utilisation de Memcached est la volatilité des données
Les données de Session n'est pas persistant dans Memcached. Donc, si le serveur tombe en panne, toutes les données en mémoire sont perdues. Tout le monde aura à nouveau vous connecter.
Et puis vous avez de la consommation de mémoire...
Rappelez-vous: les sessions sont stockées dans la mémoire. Si votre site traite une grande quantité d'utilisateurs simultanés, vous pouvez avoir à débourser un peu d'argent supplémentaire pour une plus grande allocation de la mémoire.
Enfin, le temps de latence (pas bête)
Cela met tout en perspective
Sauf si vous prévoyez de garder toute l'action sur une seule machine, vous finirez par l'échelle de votre cluster memcached sur un réseau de serveurs. (C'est la mise à l'échelle à l'horizontale), la Latence peut avoir un effet dramatique sur les performances et le débit, lorsqu'il n'est pas abordé avec la quantité appropriée de matériel pour gérer les exigences de la charge.
Mes instances Amazon EC2, par exemple, ont un temps de latence d'environ 80 ms, et la plus coûteuse dans mon application prend environ 70 ms pour exécuter et mettre en cache une page unique. Certains de la plus rapide des pages utilisées pour prendre 1 à 2 ms, mais maintenant, prenez 81 ms 80 ms peine. Ainsi, au lieu de penser que l'ajout de 2 serveurs "triple" de mes capacités, je serais mal. De 5 à 10 serveurs, peut-être? Il n'y a pas de formule pour déterminer le nombre optimal après la mise à niveau, comme le seul moyen de le savoir est de mesurer le trafic comme il vient, et de tourner de nouveaux serveurs lorsque le besoin arrive. Un autre $ $ $ $ contrepartie, mais vous pouvez mettre à l'échelle de l'infini sur le bon marché, parce que l'obtention de plus de bande passante avec plus de matériel a toujours été la partie la plus facile!