Comment gérer qu'un seul PHP5 session sur plusieurs serveurs apache?
Bonjour, je dois récupérer des données à partir de plusieurs serveurs web. J'ai d'abord vous connecter en tant qu'utilisateur de mon site web. Après le succès de la connexion, je dois récupérer des données à partir de différents serveurs web et l'affichage. Comment puis-je partager une session unique avec de multiples serveurs. Comment puis-je y parvenir?
Lors de ma première connexion à créer de la session et l'id de session enregistré sur le dossier temp de ce serveur. Lorsque j'essaie d'accéder à un autre serveur comment puis-je utiliser de la session en cours que déjà créé lorsque je me suis connecté. Quelqu'un peut-il proposer une solution?
OriginalL'auteur learner | 2011-06-27
Vous devez vous connecter pour publier un commentaire.
Vous devrez utiliser un autre gestionnaire de session.
Vous pouvez:
session_set_save_handler
) oumemcached semble avoir beaucoup moins de problèmes et plus stable
OriginalL'auteur Artefacto
En complément de toutes ces réponses:
Si vous stocker les sessions dans des bases de données, vérifiez que ordures collecte des sessions en PHP est vraiment activé (ce n'est pas le cas sur Debian-like distributions, ils ont décidé à la poubelle des sessions avec leurs propres cron et modifié le php.ini de sorte à ne jamais lancer un gc, afin de vérifier la
session.gc_probability
etsession.gc_divisor
). Le principal problème de sessionstorage dans la base de données est qu'il exige beaucoup de l'écriture de requêtes et de beaucoup de conflits d'accès dans la base de données. C'est une excellente façon de souligner un serveur de base de données comme MySQL. Donc, à mon humble avis, l'utilisation d'une autre solution est meilleure, ce qui maintient votre ratio de lecture/écriture dans un meilleur web-base de données.Vous pouvez aussi garder le système de stockage de fichiers et il suffit de partager le répertoire de fichiers entre les serveurs avec NFS. Modifier la
session.save_path
paramètre à utiliser autre chose que/tmp
. Mais NFS est, par définition, pas le plus rapide wày de l'utilisation d'un disque. Préférez memcached ou mongodb pour un accès rapide.Si la seule chose que vous devez partager entre le serveur est authentification, alors au lieu de partager le vrai de stockage de session que vous pourriez partager l'authentification des informations d'identification. Comme le système OpenId dans l'affirmative, c'est ce que nous appelons un SSO, pour la partie web, vous avez plusieurs solutions, à partir de OpenId à CAS, et d'autres. Si les données sont regroupées sur le côté client (ajax, ESI-gate), alors vous n'avez pas vraiment besoin d'une session commune de stockage de données sur le côté serveur. Cela permettra d'éviter d'avoir 3 des 5 touchés application web de l'écriture des données dans la session partagée dans le même temps. Session d'autres techniques de partage de données (base de données, NFS, même memcached) sont principalement utilisés pour le partage de vos données entre plusieurs serveurs, car les outils d'Équilibrage de Charge peut mettre votre séquentielle demande HTTP à partir d'un serveur à un autre, mais si vous avez vraiment dire parallèles de collecte de données, vous devez vraiment l'étude de l'authentification unique.
OriginalL'auteur regilero
Une autre option serait d'utiliser memcached stocker les sessions.
La chose importante est que vous devez disposer d'une ressource partagée - une base de données SQL, memcached, une base de données NoSQL, etc. que tous les serveurs peuvent accéder. Vous utilisez ensuite session_set_save_handler pour accéder à la ressource partagée.
OriginalL'auteur chiborg
Stocker les sessions dans une base de données qui est accessible à partir de l'ensemble du pool de serveur.
OriginalL'auteur Bjorn
Stocker dans une base de données - obtenir tous les serveurs de se connecter à la même base de données. Premier résultat pour "php magasin de session dans la base de données"
OriginalL'auteur tucuxi