Création d'un Ecouteur d'événement en PHP, en attente de contenu XML

voix
18

Je dois créer un écouteur d'événement. Je suis un novice donc être gentil :)

En fait, je suis sur page1.php (fichier php); Je veux dans une boucle pour aller vérifier page2.xml (fichier xml) pour des informations qui doivent être reçues à un moment donné. Soit vérifier tout le temps, ou attendre et toutes les 5 minutes pour voir si certaines informations ont été reçues il. Soit d'entre eux travaillent pour moi.

Si aucune information n'a été reçue au bout de quelques minutes, je veux courir à nouveau la boucle (jusqu'à ce qu'il soit reçu), sinon, aller de l'avant et faire quelque chose avec mes informations récemment reçues. Cette partie, je n'ai aucun problème avec, juste l'écouteur d'événement lui-même. Je ne pouvais pas trouver la fonction que je devrais utiliser partout. :( Je ne dois vérifier et récupérer tous si souvent le contenu du fichier xml.

Je ne suis pas sûr de savoir comment je vais à ce sujet s'il n'y a pas seulement une fonction qui fait cela, mais je ne pouvais pas trouver beaucoup quand je recherchais « Ecouteur d'événement php ».

Toute aide serait appréciée: référence au code tutorials / échantillon / même me dire quels mots-clés que je devrais regarder ou ce que je dois apprendre d'abord afin de le faire.

Merci!

Créé 21/12/2011 à 23:17
utilisateur
Dans d'autres langues...                            


3 réponses

voix
1

Eh bien, vous devez comprendre la terminologie que vous utilisez. PHP est pas une langue événementielle, il est une langue axée sur la demande. Une demande entre dans le serveur web, PHP et une analyse réponse est renvoyée au demandeur. À aucun moment, il sont des événements déclenchés que vous pouvez traiter ou manipuler. Vous pouvez mettre en œuvre votre propre « système d'événements », mais en fin de compte ce qui est beaucoup plus de travail que ce que votre cas d'utilisation implique.

Votre meilleur pari est probablement AJAX et en utilisant en permanence faire des demandes à votre script PHP jusqu'à ce que vous retournez les données que vous recherchez. En fin de compte , vous aurez besoin d' en apprendre davantage sur l' XMLHttpRequestobjet JavaScript. Une fois que vous comprenez comment effectuer des requêtes asynchrones en utilisant JavaScript , vous pouvez regarder la setInterval()méthode de la façon de faire une demande à plusieurs reprises.

Une fois que vous pouvez faire à plusieurs reprises des requêtes asynchrones, il devrait être un processus relativement simple de créer une page Web où vous pouvez déclencher les requêtes AJAX à envoyer.


Il n'y a pas besoin d'une boucle dans votre code PHP. La boucle est effectivement réalisée sur l'autre extrémité. Voici un flux de texte que vous pouvez suivre:

  1. Aller à un site conçu pour déclencher vos appels AJAX et les déclencher.
  2. Faites votre demande async à votre script PHP.
  3. Dans votre script PHP ouvrir le fichier XML et vérifier le contenu nécessaire.
  4. Retour une réponse sous la forme d'un objet JSON. Une réponse peut signifier les données n'a pas été mis à jour, l'autre réponse signifie que les données ont été mises à jour.
  5. Dans la réponse, si les données ne sont pas mises à jour répétition de l'étape (2). Si les données ont été mises à jour passez à l'étape (6).
  6. Afficher un message d'accueil que vos données de célébration a été mis à jour ou un avis que nous attendons toujours les données à jour. Peut-être que vous pouvez avoir le nombre d'essais et, sur le côté.
Créé 21/12/2011 à 23:57
source utilisateur

voix
0

Je l'ai fait quelque chose comme cela à écrire un analyseur de boîte de réception en PHP. Vous êtes la meilleure option est de:

Code page1.phpdans lequel vous avez juste besoin de faire 2 choses: lire XML à partir page2.xmlet s'il y a quelque chose « nouveau » il suffit d' exécuter le code-analyse des données.

Installation d' un Cron (si vous êtes sous Linux) pour exécuter toutes les 5 minutes (commande Cron est quelque chose comme: php /path/to/page1.php). De la même manière, si vous utilisez Windows , vous pouvez configurer une tâche planifiée et exécuter la même commande. Sachez que le chemin complet à votre installation de PHP doit être dans la PATHvariable d' environnement.

Créé 22/12/2011 à 00:20
source utilisateur

voix
1

Je l'ai fait ce qui suit:

automatiquement enregistré dans la base de données à chaque fois quelque chose de nouveau venu.

Puis a couru une boucle de php que toutes les quelques minutes pour vérifier s'il y a quelque chose de nouveau dans la base de données qui correspond aux paramètres de ce nouvel événement (y compris qu'il happenned dans les délais des dernières minutes). Je flush();puis sleep(120);dans la boucle pour obtenir la boucle pour continuer à courir toutes les quelques minutes, jusqu'à ce que la nouvelle information est entré dans ce cas , elle break();ou die();.

Créé 03/01/2012 à 23:57
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more