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
- Pourquoi la souveraineté des données relève du contrôle et non de la géographie
- L’incident OpenAI–Hugging Face n’est pas la révolution que vous imaginez
- Pourquoi les PME ne peuvent plus se permettre de négliger la sécurité de leur parc d’imprimantes
- Ransomware : les identités compromises à l’origine de 79% des attaques
Articles les + lus
Couchbase lance AI Data Plane pour industrialiser l’IA agentique
Windows 11 : Microsoft généralise le point-in-time restore pour accélérer la remise en service des PC
Computex 2026 : 5 signaux forts à retenir
La chaîne d’approvisionnement, point de rupture récurent du SI
Microsoft Build 2026 : contre-offensive des modèles maison face à OpenAI et Anthropic
À la une de la chaîne Tech
- Couchbase lance AI Data Plane pour industrialiser l’IA agentique
- Windows 11 : Microsoft généralise le point-in-time restore pour accélérer la remise en service des PC
- Computex 2026 : 5 signaux forts à retenir
- La chaîne d’approvisionnement, point de rupture récurent du SI
- Microsoft Build 2026 : contre-offensive des modèles maison face à OpenAI et Anthropic
