Envoi d'information dans une page web (php)

Eléphant du PHP | 432 Messages

03 mai 2018, 17:38

Bonjour à tous,

je cherche a savoir si est possible d'envoyer une information dans une page web. J'explique pour que ma demande/explication soit claire. :D :D :D

Je dispose:
- d'un logiciel Y (logiciel sous windows)
- De mon serveur WEB (Linux,Php, Mysql) avec une page web (toto.php).

je voudrais savoir si il est possible de faire du "push" sur une page php (toto.php)?

Le but c'est que mon logiciel Y envois en "push" une information vers mon serveur WEB. et que cela mettre à jour ma page web toto.php en instantané.

Est-ce réalisable? Si oui avec quelle type de technologie ?

merci d'avance pour vos explications

guigui69

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 7665 Messages

05 mai 2018, 13:24

Bonjour,
Si j'ai bien compris la question, c'est possible très simplement en PHP, simplement en passant une variable dans l'URL indiquant la modif que tu veux faire.
Ensuite ton fichier toto.php va récupérer la valeur de cette variable et la stocker sur le serveur (sous forme d'un fichier texte par exemple ou dans une base de données), comme ça désormais tous les prochains appels pour afficher la page toto.php va prendre en compte la nouvelle valeur que tu as stocké dans ton fichier/bdd.

En fait, ce n'est ni plus ni moins que de la gestion tout à fait classique d'un formulaire en PHP, sauf qu'au lieu d'avoir une page avec des champs de formulaire tu va appeler directement le script qui fait le traitement du formulaire en passant les paramètres dans l'url (donc en GET)
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphant du PHP | 432 Messages

06 mai 2018, 12:21

Bonjour Arthur,

merci pour ta réponse.
Mais le truc c'est que ma page toto.php va etre consulter en continu par plusieurs personne. (sans que la page soit rechargé // en faisant F5).

avec plusieurs informations qui vont arriver à la suite.

En fait le logiciel Y va envoyer à la suite une information vers mon serveur WEB , mais comment sur la page toto.php afficher l'information reçu tout se suite (c'est pour ca que je parle de push, car des qu'on recoit l'information cela doit pousser l'information sur la page toto.php

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 7665 Messages

06 mai 2018, 14:44

Tout dépend de la réactivité attendu entre le moment où tu pousses l'info et le moment où elle s'affiche sur la page.
- Si tu dois faire du temps réel (ie quelques millisecondes), alors tu peux utiliser des websocket, mais c'est complexe à mettre en œuvre.
- Si tu peux attendre quelques secondes, alors le plus simple c'est de faire du pull en ajax/javascript toutes X secondes qui va demander à ton serveur si il y a des nouveautés à afficher.


Voici comment je ferrai pour afficher le contenu d'un fichier texte sur une page HTML avec un rafraichissement automatique toutes les secondes.

Code : Tout sélectionner

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script> <script> $(document).ready(function(){ call_verif_nouveau_contenu(); function call_verif_nouveau_contenu() { $.ajax({ url: "contenu_a_afficher.txt", success: function(data){ $('#contenu').html(data); // insère le contenu du fichier texte dans ta page (dans la div contenu) }, complete: function() { setInterval(call_verif_nouveau_contenu, 1000); // Relancer la requete toutes les secondes (1000ms) } }); }; });</script> <div id='contenu'></div>

:!: Important : Quand un utilisateur va charger cette page HTML, cela va alors générer 1 appel au serveur toutes les secondes et cela pour tous les utilisateurs en même temps, donc il faut vérifier que tu ne prévois pas d'avoir trop d'utilisateurs simultanés, ou à défaut il te faudra un bon serveur qui tiendra le coup.

Si tu n'as pas besoin d'avoir une réactivité à la seconde près, tu peux dans mon script modifier la fréquence de rafraichissement pour mettre 5 ou 10 secondes (ou 1 minute selon ton besoin) et ainsi être sûr de ne prendre aucun risque.


:arrow: Maintenant tu as la solution pour mettre à jour automatiquement du contenu sur une page déjà chargée.
Je te laisse faire le + facile à savoir le script PHP qui va mettre à jour le contenu du fichier texte :D
Quand tout le reste a échoué, lisez le mode d'emploi...

ViPHP
ViPHP | 5886 Messages

07 mai 2018, 01:23

- Si tu dois faire du temps réel (ie quelques millisecondes), alors tu peux utiliser des websocket, mais c'est complexe à mettre en œuvre.
Complexe à mettre en oeuvre ... en PHP (tel que PHP est déployé habituellement), facile dans tous les autres langages (NodeJS, Python, Java, etc). Et facile à mettre en oeuvre du côté client en JS (à peut près la même quantité de code qu'en ajax). :)

PHP est conçu pour servir des pages Web dynamiques et non conserver une connexion ouverte, PHP a les défauts de ses avantages !

Eléphant du PHP | 432 Messages

19 mai 2018, 18:19

les websocket c'est complexe ?

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 7665 Messages

20 mai 2018, 00:19

les websocket c'est complexe ?
Non, mais il te faut un serveur adapté car PHP n'est pas adapté à cela, typiquement nodejs fait cela facilement.
Cherche un peu sur internet il y a pas mal de tuto à ce sujet
Quand tout le reste a échoué, lisez le mode d'emploi...