2012-06-07 7 views
2

Je travaille actuellement sur une application Facebook fonctionnant sur Amazon EC2. L'application fonctionne et la plupart du développement est terminé, mais nous ne pouvons pas faire durer les sessions. Nous avons essayé la gestion des sessions PHP par défaut, la gestion des bases de données et la gestion des memcaches en utilisant l'astuce PHP save_path de la session. Nous avons essayé de jouer avec des paramètres ini comme auto_start, sans succès.Les sessions PHP ne persistent pas sur Amazon EC2

Le problème étrange est que l'écriture de session initiale DOES écrit, mais toute écriture ultérieure après la première ne sauvegarde pas. Nous pouvons voir le cookie de session persister, mais l'écriture réelle des données échoue toujours après la première écriture. Ce problème étrange s'applique à n'importe quel gestionnaire de session que nous utilisons.

Notre configuration EC2 est la suivante:

  • Dev: 1 serveur linux 64 bits, 1 serveur MongoDB, 1 ElastiCache groupe
  • Mise en scène: 1 serveur linux 64 bits, 1 serveur MongoDB, 1 ElastiCache groupe
  • Prod: 2 serveurs Linux 64 bits avec 1 équilibreur de charge, 3 serveurs MongoDB avec replicaSet, 2 pôles de maux élastiques

Le problème de la session est reproductible dans tous les environnements. Je suis à court d'idées ici car j'ai essayé tout ce que je sais et tout ce que j'ai trouvé pendant Google.

Pour référence, nous utilisons CakePHP 2.1, mais nous avons aussi essayé des sessions en dehors de CakePHP.

+0

Personne d'autre ne semble avoir le même problème, donc il est probable que ce soit quelque chose dans votre code. – Danack

Répondre

0

Vérifiez le session.save_path dans votre php.ini.

Lire cela aussi: http://php.net/manual/en/function.session-save-path.php

, vous pouvez également d'afficher toutes la session * parties de votre php.ini.. Pouvez-vous poster votre code le plus simple et le plus reproductible?

+0

Donc trouvé quelques choses après plus de débogage. J'ai remarqué qu'aucun de mes paramètres ini n'était en train d'être écrit, et j'ai découvert plus tard que le SDK de Facebook commençait la session automatiquement, ce qui provoquait l'initialisation des sessions de CakePHP. Après avoir déplacé du code, mes paramètres ini sont en cours d'écriture. Cela semble fonctionner jusqu'à présent, mais une petite chose. J'ai save_handler mis à memcache, et je vois les données en cours d'écriture, mais ils sont écrits comme .lock et ne persistent pas si je rafraîchis la page, je reçois un nouvel ID de session à chaque fois. Seulement se passe avec memcache. –