> Tech > Sessions du genre écran vert

Sessions du genre écran vert

Tech - Par iTPro - Publié le 27 octobre 2010
email

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 gratuitement cette ressource

IBMi et Cloud : Table ronde Digitale

IBMi et Cloud : Table ronde Digitale

Comment faire évoluer son patrimoine IBMi en le rendant Cloud compatible ? Comment capitaliser sur des bases saines pour un avenir serein ? Faites le point et partagez l'expertise Hardis Group et IBM aux côtés de Florence Devambez, DSI d'Albingia.

Tech - Par iTPro - Publié le 27 octobre 2010