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

Percer le brouillard des rançongiciels
Explorez les méandres d’une investigation de ransomware, avec les experts de Palo Alto Networks et Unit 42 pour faire la lumière dans la nébuleuse des rançongiciels. Plongez au cœur de l’enquête pour comprendre les méthodes, les outils et les tactiques utilisés par les acteurs de la menace. Découvrez comment prévenir les attaques, les contrer et minimiser leur impact. Des enseignements indispensables aux équipes cyber.
Les articles les plus consultés
Les plus consultés sur iTPro.fr
- Évolution du marché de la virtualisation : quelle voie choisir ?
- La performance de l’IA et l’analytique reposent sur des fondations de données solides
- AI Appreciation Day,16 juillet « cet email de 10 pages aurait pu se résumer en 3 points »
- L’informatique quantique perçue comme la menace de cybersécurité la plus critique
- Bâtir une entreprise AI-native : par où commencer
