Live stream d’une console SSH en PHP

J’ai récemment eu le besoin de créer un stream live entre une application PHP et un serveur debian via SSH2 dans lequel une commande tail -f est lancée, cette commande permet de récupérer immédiatement dans le flux de sorti les modifications apportées au fichier, notamment les nouvelles lignes.
Pour ce faire, c’est très simple me direz-vous, on ouvre une connexion SSH2, on exécute la commande et on attend les résultats dans le flux, oui mais il faut faire ça proprement et de manière coordonnée.

Pour établir une connexion SSH, il existe nativement des fonctions ssh2_* dans PHP qui viennent avec la lib php5-ssh2, j’ai développé une classe qui utilise ses fonctions de manière à interagir avec un objet plutôt qu’une ressource, le but n’étant pas ici de vous montrer comment utiliser cette classe, je passerai sur sa configuration, si vous avez des questions, n’hésitez pas à commenter.

Pour ce faire, d’abord, on configure PHP.

On récupère ensuite notre flux de données en SSH.

Le flux ne doit surtout pas être bloquant si vous souhaitez qu’il continue lorsque votre utilisateur se déconnecte.

Il est important de laisser notre serveur souffler un peu alors si la ligne est vide, on le laisse dormir un peu.
Ici, on s’arrête proprement si l’utilisateur s’est déconnecté, d’où l’utilisation de connection_aborted().

Enfin, on ferme proprement notre flux et sa connexion SSH2.

Ainsi le processus web se termine, la connexion SSH est fermée et le processus sur notre serveur SSH s’est arrêté.

Ma bibliothèque SSH2 : Voir sur GitHub

Florent

Je suis un développeur web à mon compte et je m'intéresse à beaucoup de choses en informatique...

Aucun commentaire

Commenter