La version RPG de l’application de saisie de commandes Acme utilise des variables RPG, des fichiers ouverts, et des sousfichiers pour contenir l’état de l’application entre chaque transition d’écran. On l’a vu, Apache/PHP ne garantira pas que notre application reviendra au même job entre chaque transition d’écran, donc nous
Sessions du genre écran vert
devons sauvegarder/restaurer l’état de l’application PHP entre les écrans.
PHP a une fonction de langage appelée sessions qui nous permet de sauvegarder et de restaurer nos données d’application PHP entre les transitions navigateur/Apache. Pour nous rappeler des valeurs entre les appels, nous créerons une structure de données qui est stockée dans la session.
Chaque fois que le script PHP se termine, il sauvegarde les données de la session. Et chaque fois qu’il redémarre parce que l’utilisateur a cliqué quelque part dans le navigateur, nous les restaurerons depuis la session.
L’application Acme PHP utilise session_name() comme nom de fichier unique pour chaque fichier IFS de session client navigateur qui est créé dans session_path("/tmp"). Chaque fois que notre application Acme PHP quittera le serveur Apache, save_session() sera appelé pour écrire des données globales dans le fichier IFS. Et quand le navigateur demandera une page dans l’application, session_restore() lira les données dans le fichier. session_write_close() PHP collecte les données qui se trouvent dans la matrice globale $_SESSION et les écrit dans notre fichier IFS. A l’inverse, session_ start() PHP restaurera la matrice $_SESSION. implode() PHP crée une ligne plate de texte provenant des valeurs de la matrice $_DS globale séparées par des points-virgules à stocker dans le fichier de session.
Nous sauvegardons le nom associatif de $_DS en utilisant array_keys() afin de pouvoir appeler explode() et array_combine() pour recréer la matrice $_DS globale.
La matrice $_DS globale utilisée dans notre application Acme PHP est dans une matrice associative. C’est un peu comme une consultation indexée (keyed lookup) dans un fichier base de données ou une recherche de matrice avec la fonction intégrée %LOOKUP en RPG, et je pense que c’est l’une des meilleures fonctions de PHP. Si vous maîtrisez les matrices associatives PHP, vous pourrez pratiquement tout faire avec PHP. On peut considérer qu’un dictionnaire est un bon exemple de matrice associative.
La matrice $_DS globale de l’application Acme PHP contient toutes les données « d’état » (state) save/restore pour l’application. Les noms d’index associatifs de la matrice ont été sélectionnés en correspondance étroite avec la version RPG de l’application Acme (données RPG DS) afin que vous puissiez comparer les structures de données côte à côte.
Astuce : Vous pouvez améliorer la performance en utilisant un fichier base de données indexé par numéro de session (ou par ID client) et en stockant les données de session dans un grand champ VARCHAR. Si vous choisissez ibm_db2 pour gérer le fichier base de données, pensez à utiliser des connexions persistantes (db2_pconnect) pour éviter l’overhead ouverture/fermeture/process sur i5/OS.
Téléchargez cette ressource
Plan de sécurité Microsoft 365
Les attaquants savent comment prendre le contrôle de votre tenant Microsoft 365, et vous, savez-vous comment le reprendre en main ?
Les articles les plus consultés
Les plus consultés sur iTPro.fr
- Veeam passe à la vitesse supérieure avec iResOps pour Microsoft 365
- Visibilité, réputation, clients : ce que les petites entreprises ne pourront plus déléguer en 2027
- IA souveraine : l’Europe avance, mais son interconnexion prend du retard
- Cloud public : la sécurité des données s’impose comme premier critère pour les agents publics
Articles les + lus
Continuer avec Exchange Server : quelles conséquences ?
Raccourcis Réseau et Navigateur : le kit de Diagnostic des Professionnels IT
Raccourcis PowerShell et Windows Terminal pour les Professionnels IT
Commandes Windows 11 : le Guide des Outils accessibles avec Win + R
Sécurité : une approche dans la durée avant tout
À la une de la chaîne Tech
- Continuer avec Exchange Server : quelles conséquences ?
- Raccourcis Réseau et Navigateur : le kit de Diagnostic des Professionnels IT
- Raccourcis PowerShell et Windows Terminal pour les Professionnels IT
- Commandes Windows 11 : le Guide des Outils accessibles avec Win + R
- Sécurité : une approche dans la durée avant tout
