


PHP Master | Amazon DynamoDB: stocker des séances PHP avec un équilibreur de charge
Cet article est partagé à partir de l'un de nos sites sœurs, CloudSpring. Si vous le trouvez utile, assurez-vous de leur rendre visite!
Ce tutoriel vous montrera comment utiliser Amazon DynamoDB comme installation de stockage pour les sessions PHP. Cette méthode devient très utile lorsque vos applications profitent des services d'équilibrage et d'automate de charge élastique. Vous aurez besoin du compte Amazon AWS activé d'utiliser EC2, Elastic Load Balancer et DynamoDB comme condition préalable pour jouer le long du tutoriel.Les plats clés
- Amazon DynamoDB peut être utilisé comme une installation de stockage pour les séances PHP, ce qui est particulièrement utile lorsque les applications tirent parti de l'équilibrage de la charge élastique et des services d'autoscalités.
- L'équilibreur de charge élastique agit comme un frontal pour un ou plusieurs serveurs virtuels, distribuant des demandes entre eux. L'automate permet au système de démarrer plus de clones des serveurs Web lorsqu'il y a un trafic élevé et d'arrêter un peu lorsque le trafic baisse.
- Les données de session PHP doivent être stockées en dehors du serveur virtuel. Une option consiste à stocker des sessions dans une base de données comme DynamoDB, qui est une base de données NOSQL puissante et rapide gérée par Amazon.
- La classe Amazondynamodb du SDK PHP officiel est équipée pour s'inscrire en tant que gestionnaire de session. Le SDK AWS pour PHP permet aux développeurs de créer plus facilement des applications qui exploitent le cloud AWS rentable, évolutif et fiable.
Qu'est-ce qu'un équilibreur de charge élastique
L'équilibreur de charge élastique agit comme un frontal pour un ou plusieurs de vos serveurs virtuels. Il accepte les demandes et les distribue entre les serveurs virtuels. Les serveurs virtuels peuvent être créés en clonage un modèle de machine (AMI) ou peuvent être détruits si nécessaire. Traitement de l'alimentation si votre application peut varier en ajoutant ou en réduisant dynamiquement les serveurs virtuels.et automatiquement?
Lorsque la mise à l'échelle automatique rejoint le jeu, le système peut également:- Démarrer plus de clones des serveurs Web lorsqu'il y a un trafic élevé
- Arrêter certains d'entre eux lorsque le trafic tombe en dessous d'un seuil prédéfini
- terminer les instances malsaines et les remplacer si nécessaire
comment puis-je faire?
L'une de vos applications peut-elle fonctionner dans cet environnement? Oui s'il satisfait deux exigences critiques:- Étant donné que les serveurs virtuels sont créés dynamiquement, les serveurs ne doivent contenir que le code d'application et non aucune donnée. Ceci est facilement faisable avec un service de base de données.
- Tout état de session utilisateur doit être persisté en dehors du serveur virtuel. Ceci est un peu plus difficile, car par défaut, le module PHP stocke ces données dans le système de fichiers du serveur Web Che.
que ne pas faire: sessions collantes
Sticky Session est une fonctionnalité du service d'équilibreur de charge élastique qui lie la session d'un utilisateur à une instance d'application spécifique, de sorte que toutes les demandes provenant de l'utilisateur pendant la session seront envoyées au même serveur virtuel. Le cookie de session peut être généré par l'équilibreur de chargement ou l'application, mais: c'est considéré comme une mauvaise pratique. L'idéal serait de concevoir l'application comme apatride, mais ce n'est pas toujours possible.Stockez vos sessions dans une base de données
L'autre option est: stocker nos sessions dans une base de données. Il peut s'agir de la même base de données SQL externe utilisée par l'application ou une instance MemCache ou une autre base de données NOSQL. Dans ce cas, DynamoDB semble très intéressant car il s'agit d'une base de données NOSQL puissante et rapide, elle est gérée par Amazon elle-même et est également facile à partir de nos serveurs virtuels. De plus, la classe Amazondynamodb du SDK PHP officiel est déjà équipée pour s'inscrire en tant que gestionnaire de session. Si vous n'avez jamais entendu parler de DynamoDB, je vous recommande de regarder cette vidéo d'introduction.L'application de démonstration
J'ai mis en place une application simple pour tester l'intégralité du mécanisme, vous pouvez télécharger le code source à partir de notre référentiel GitHub. Nous exécuterons cette application à l'aide d'un équilibreur de charge élastique et au moins deux instances. Nous n'utiliserons pas la mise en scène pour le moment.
<span>require_once 'lib/session.php'; </span><span>try { </span> <span>// Engine can be PHP or AmazonDynamoDB </span> <span>$session = new Session($config['session']['engine'], $config['session']['params']); </span><span>} catch (Exception $e) { </span> <span>exit($e->getMessage()); </span><span>} // end try</span>La valeur du moteur par défaut est PHP qui n'a pas besoin de paramètres. Si nous choisissons le moteur «Amazondynamodb», le constructeur de session exécutera un code supplémentaire:
<span>switch ($engine) { </span><span>case 'AmazonDynamoDB': </span><span>// Load AWS SDK </span><span>require_once 'AWSSDKforPHP/sdk.class.php'; </span><span>// Create a list of credential sets that can be used with the SDK. </span><span>CFCredentials<span>::</span>set($params['credentials']); </span><span>// Instantiate a DynamoDB client </span><span>$dynamodb = new AmazonDynamoDB(); </span><span>$dynamodb->set_region($params['region']); </span><span>// Instantiate, configure, and register the session handler </span><span>$this->handler = $dynamodb->register_session_handler(array( </span><span>'table_name' => $params['table_name'], </span><span>'lifetime' => $params['lifetime'], </span><span>)); </span><span>break;</span>Nous chargeons d'abord le SDK AWS qui doit être déjà installé et accessible, puis nos informations d'identification sont chargées dans l'environnement AWS. À partir de ce moment, nous pouvons utiliser des classes AWS, donc une nouvelle instance d'Amazondynamodb est créée et configurée avec la bonne région où réside notre table. Enfin, nous disons à notre objet DynamoDB de s'inscrire en tant que gestionnaire de session passant le nom de la table à utiliser, et c'est vraiment ce dont nous avons besoin. Le fichier config.php est l'endroit où nous indiquons à l'application quel moteur que nous souhaitons utiliser, également nos paramètres AWS Credentials et DynamoDB sont enregistrés ici. Dans l'index.php, j'ai également inclus une petite fonction utilitaire qui, si nous ne sommes pas dans le serveur local, récupère le nom de l'instance dans laquelle est en cours d'exécution. Ceci est utile pour vérifier que la session est maintenue cohérente sur nos serveurs.
<span>function getServerName() { </span> <span>$host = $_SERVER['SERVER_NAME']; </span> <span>if ('localhost' != $host) { </span> <span>// Maybe we are on EC2, trying to catch the current instance ID </span> <span>$ch = curl_init('http://169.254.169.254/latest/meta-data/instance-id'); </span> <span>curl_setopt($ch, CURLOPT_FAILONERROR, true); </span> <span>curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); </span> <span>curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 2); </span> <span>if ($ret = curl_exec($ch)) { </span> <span>$host .= ' (instance ' . $ret . ')'; </span> <span>} // end if </span> <span>curl_close($ch); </span> <span>} // end if </span> <span>return $host; </span><span>} // end function</span>La fonction getServerName () utilise l'API Metadata EC2 pour trouver le nom de l'instance. Exécutez l'application sur votre flotte Afin de tester cette application, nous avons besoin d'une flotte d'au moins deux serveurs Web derrière un équilibreur de charge. Le serveur que j'ai utilisé est une instance Ubuntu GNU / Linux équipée de:
- Le serveur Web Apache,
- php 5.3 (à la fois la ligne de commande et le module Apache),
- Le programme Curl et l'extension PHP,
- Le gestionnaire de packages de puits (nécessaire pour installer facilement le SDK),
- Le SDK AWS pour PHP (je suggère l'installation par poire).
Initialiser le stockage de session
Accédez à votre console AWS, sélectionnez le service DynamoDB et votre région préférée (le mien est UE West - Irlande). Cliquez sur le bouton «Créer la table».
Lancez et configurez les serveurs
Configuration de l'équilibreur de charge
Avec la base de données et toutes les instances en place, nous pouvons désormais configurer l'équilibreur de charge Frontend. Dans le menu de navigation EC2, sous «Network & Security», choisissez «Charge Balancers» et cliquez sur le bouton «Créer un équilibreur de charge».
Résumé
Et c'est tout pour l'instant. Nous avons couvert un sujet important dans l'écosystème AWS, mais ce n'est que le début. Toutes ces choses sont entièrement programmables, par exemple: vous pouvez ajouter l'automate et concevoir vos instances pour être auto-configurable et télécharger des informations d'identification AWS et d'autres données d'un endroit de confiance. Ou vous pouvez utiliser la formation de cloud pour créer un modèle réutilisable pour toute l'infrastructure. Le point de départ à vérifier est la page d'accueil AWS. Et maintenant, si vous avez terminé les tests, n'oubliez pas de résilier toutes vos affaires, sinon un codage heureux! Image via FotoliaQuestions fréquemment posées (FAQ) sur Amazon DynamoDB et PHP Sessions
Comment puis-je implémenter l'équilibrage de charge avec Amazon DynamoDB et PHP Sessions?
L'équilibrage de charge est un aspect crucial de la gestion du serveur et de la garantie de performances optimales. Avec Amazon DynamoDB et PHP Sessions, vous pouvez y parvenir en utilisant le service d'équilibrage de charge élastique d'Amazon (ELB). ELB distribue automatiquement le trafic d'application entrant sur plusieurs cibles, telles que les instances Amazon EC2, les conteneurs et les adresses IP. Il peut gérer la charge variable de votre trafic d'application dans une seule zone de disponibilité ou sur plusieurs zones de disponibilité.
Quels sont les avantages de l'utilisation d'Amazon DynamoDB pour les sessions PHP?
Amazon DynamoDB offre plusieurs avantages Pour les séances PHP. Il offre des performances rapides et prévisibles avec une évolutivité transparente. Vous pouvez faire évoluer vos tables vers le haut ou vers le bas pour ajuster le trafic, sans aucune dégradation des temps d'arrêt ni des performances. DynamoDB propose également la sécurité, la sauvegarde et la restauration intégrées et la mise en cache en mémoire pour les applications à l'échelle Internet.
Comment puis-je utiliser le SDK AWS pour PHP avec DynamoDB?
Le SDK AWS Pour PHP, il est plus facile pour les développeurs de créer des applications qui exploitent le cloud AWS rentable, évolutif et fiable. Les échantillons de bibliothèque et de code AWS PHP sont inclus dans le SDK qui montrent comment utiliser le SDK AWS pour PHP pour exploiter toutes les fonctionnalités fournies par les services AWS comme Amazon S3, Amazon EC2 et DynamoDB.
Est-ce que certains dynamoDB sont courants avec des exemples de code PHP?
Il existe plusieurs exemples de code communs pour l'utilisation de DynamoDB avec PHP. Il s'agit notamment de la création d'une table, de l'écriture d'éléments dans une table, de la lecture d'éléments d'une table, de la mise à jour des éléments dans une table et de la suppression des éléments d'une table. Chacune de ces opérations peut être effectuée en utilisant le SDK AWS pour Php.
où puis-je trouver des scripts PHP pour Amazon Store?
Vous pouvez trouver des scripts PHP pour Amazon Store sur diverses plates-formes en ligne comme Codecananyon. Ces scripts vous permettent d'intégrer les services d'Amazon dans vos applications PHP, offrant des fonctionnalités telles que la recherche et l'affichage de produits, la gestion des paniers d'achat et le traitement des commandes.
Y a-t-il des exemples complets pour DynamoDB avec PHP?
Oui, il existe des exemples complets pour utiliser DynamoDB avec PHP. Ces exemples incluent généralement du code pour créer une table, écrire des éléments dans la table, lire les éléments de la table, mettre à jour les éléments dans la table et supprimer des éléments de la table. Ils incluent également souvent des exemples de comment gérer les erreurs et les exceptions.
Comment puis-je gérer les erreurs et les exceptions dans DynamoDB avec PHP?
Lorsque vous travaillez avec DynamoDB et PHP, vous pouvez gérer les erreurs et les exceptions en utilisant des blocs de capture d'essai. Le SDK AWS pour PHP lance des exceptions lorsque les opérations échouent, et vous pouvez assister à ces exceptions pour les gérer d'une manière qui convient à votre application.
Comment puis-je optimiser les performances avec DynamoDB et PHP?
Il existe plusieurs façons d'optimiser les performances avec DynamoDB et PHP. Il s'agit notamment d'utiliser le débit provisionné pour gérer la capacité, l'utilisation d'index secondaires globaux pour accélérer les requêtes et l'utilisation de l'accélérateur DynamoDB (DAX) pour fournir une mise en cache en mémoire.
Comment puis-je sécuriser mes données dans DynamoDB?
DynamoDB fournit plusieurs fonctionnalités de sécurité pour protéger vos données. Il s'agit notamment du cryptage au repos, qui sécurise vos données à partir d'un accès non autorisé au stockage sous-jacent et au chiffrement en transit, qui protège vos données lorsqu'il voyage entre votre application et DynamoDB.
Comment puis-je sauvegarder et restaurer les données dans DynamoDB?
DynamoDB fournit une prise en charge intégrée pour la sauvegarde et la restauration des données. Vous pouvez créer des sauvegardes à la demande à tout moment et restaurer vos données de table à partir de ces sauvegardes en cas de besoin. Cela vous permet de protéger vos données contre la suppression ou la modification accidentelle, et de maintenir votre application en douceur même en cas d'échec.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

PHP est utilisé pour créer des sites Web dynamiques, et ses fonctions principales incluent: 1. Générer du contenu dynamique et générer des pages Web en temps réel en se connectant à la base de données; 2. Traiter l'interaction utilisateur et les soumissions de formulaires, vérifier les entrées et répondre aux opérations; 3. Gérer les sessions et l'authentification des utilisateurs pour offrir une expérience personnalisée; 4. Optimiser les performances et suivre les meilleures pratiques pour améliorer l'efficacité et la sécurité du site Web.

PHP utilise les extensions MySQLI et PDO pour interagir dans les opérations de base de données et le traitement de la logique côté serveur, et traite la logique côté serveur via des fonctions telles que la gestion de session. 1) Utilisez MySQLI ou PDO pour vous connecter à la base de données et exécuter les requêtes SQL. 2) Gérer les demandes HTTP et l'état de l'utilisateur via la gestion de session et d'autres fonctions. 3) Utiliser les transactions pour assurer l'atomicité des opérations de base de données. 4) Empêcher l'injection de SQL, utiliser les connexions de gestion des exceptions et de clôture pour le débogage. 5) Optimiser les performances via l'indexation et le cache, écrivez du code très lisible et effectuez une gestion des erreurs.

L'utilisation de déclarations de prétraitement et l'APD dans PHP peut effectivement empêcher les attaques d'injection SQL. 1) Utilisez PDO pour vous connecter à la base de données et définir le mode d'erreur. 2) Créez des instructions de prétraitement via la méthode de préparation et transmettez des données à l'aide des espaces réservés et exécutez des méthodes. 3) Traitez les résultats de la requête et assurez la sécurité et les performances du code.

PHP et Python ont leurs propres avantages et inconvénients, et le choix dépend des besoins du projet et des préférences personnelles. 1.Php convient au développement rapide et à la maintenance des applications Web à grande échelle. 2. Python domine le domaine de la science des données et de l'apprentissage automatique.

PHP est largement utilisé dans le commerce électronique, les systèmes de gestion de contenu et le développement d'API. 1) E-commerce: Utilisé pour la fonction de panier et le traitement des paiements. 2) Système de gestion du contenu: utilisé pour la génération de contenu dynamique et la gestion des utilisateurs. 3) Développement des API: Utilisé pour le développement de l'API RESTful et la sécurité de l'API. Grâce à l'optimisation des performances et aux meilleures pratiques, l'efficacité et la maintenabilité des applications PHP sont améliorées.

PHP facilite la création de contenu Web interactif. 1) Générez dynamiquement du contenu en intégrant HTML et affichez-les en temps réel en fonction des données d'entrée ou de base de données utilisateur. 2) Traitez la soumission du formulaire et générez une sortie dynamique pour garantir que HTMLSpecialChars est utilisé pour empêcher les XS. 3) Utilisez MySQL pour créer un système d'enregistrement des utilisateurs, et utilisez des instructions Password_hash et du prétraitement pour améliorer la sécurité. La maîtrise de ces techniques améliorera l'efficacité du développement Web.

PHP et Python ont chacun leurs propres avantages et choisissent en fonction des exigences du projet. 1.Php convient au développement Web, en particulier pour le développement rapide et la maintenance des sites Web. 2. Python convient à la science des données, à l'apprentissage automatique et à l'intelligence artificielle, avec syntaxe concise et adaptée aux débutants.

PHP est toujours dynamique et occupe toujours une position importante dans le domaine de la programmation moderne. 1) La simplicité de PHP et le soutien communautaire puissant le rendent largement utilisé dans le développement Web; 2) sa flexibilité et sa stabilité le rendent exceptionnelle dans la gestion des formulaires Web, des opérations de base de données et du traitement de fichiers; 3) PHP évolue et optimise constamment, adapté aux débutants et aux développeurs expérimentés.


Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

PhpStorm version Mac
Le dernier (2018.2.1) outil de développement intégré PHP professionnel

Version Mac de WebStorm
Outils de développement JavaScript utiles

Télécharger la version Mac de l'éditeur Atom
L'éditeur open source le plus populaire

Dreamweaver Mac
Outils de développement Web visuel