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
Sécuriser Microsoft 365 avec une approche Zero-Trust
Découvrez comment renforcer la cyber-résilience de Microsoft 365 grâce à une approche Zero-Trust, une administration granulaire et une automatisation avancée. La technologie Virtual Tenant de CoreView permet de sécuriser et simplifier la gestion des environnements complexes, tout en complétant vos stratégies IAM, y compris dans les secteurs réglementés.
Les articles les plus consultés
Les plus consultés sur iTPro.fr
- Baromètre channel IT : fin du cuivre, essor de UCaaS et premiers pas vers l’IA
- Fraude par identité synthétique : comment l’IA peut redonner confiance aux entreprises et à leurs clients
- VirtualBrowser protège la navigation web à la source
- Innovation et performance : le rôle clé du consulting dans la transformation numérique
Articles les + lus
Moderniser le développement logiciel : de la fragmentation à l’intégration
Analyse Patch Tuesday Mars 2026
Une nouvelle ère de la modernisation du mainframe
Communes, entreprises ? Non, face au RGAA 5, l’IA seule ne rendra pas vos sites accessibles
DevX Summit EMEA : les développeurs au cœur de la révolution de l’IA
À la une de la chaîne Tech
- Moderniser le développement logiciel : de la fragmentation à l’intégration
- Analyse Patch Tuesday Mars 2026
- Une nouvelle ère de la modernisation du mainframe
- Communes, entreprises ? Non, face au RGAA 5, l’IA seule ne rendra pas vos sites accessibles
- DevX Summit EMEA : les développeurs au cœur de la révolution de l’IA
