Η δημιουργία ενός συμβάντος σε PHP, περιμένοντας το περιεχόμενο XML

ψήφοι
18

Θα πρέπει να δημιουργήσετε έναν ακροατή εκδήλωση. Είμαι αρχάριος, ώστε να είναι είδος :)

Βασικά είμαι σε page1.php (αρχείο php)? Θέλω μέσα σε ένα βρόχο για να πάει ελέγξετε page2.xml (αρχείο xml) για κάποιες πληροφορίες που θα πρέπει να λαμβάνονται σε κάποιο σημείο. Είτε το δείτε όλη την ώρα, ή να περιμένει και κάθε 5 λεπτά ή έτσι για να δούμε αν κάποιες πληροφορίες έχει λάβει εκεί. Είτε από αυτούς εργάζονται για μένα.

Αν δεν info έχει ληφθεί μετά από λίγα λεπτά, στη συνέχεια θέλω να εκτελέσετε ξανά το βρόχο (μέχρι να εισπραχθούν), διαφορετικά, να προχωρήσουμε και να κάνουμε κάτι με πρόσφατα έλαβε τις πληροφορίες μου. Αυτό το μέρος δεν έχω κανένα πρόβλημα με, μόνο η εκδήλωση ίδια ακροατή. Δεν μπόρεσα να βρω τη λειτουργία θα πρέπει να χρησιμοποιείτε οπουδήποτε. :( Το μόνο που πρέπει να ελέγξετε και να ανακτήσετε το περιεχόμενο του αρχείου xml κάθε τόσο.

Δεν είμαι τόσο σίγουρος πώς θα πρέπει να πάει για αυτό, αν δεν υπάρχει μόνο μια λειτουργία που το κάνει αυτό, αλλά δεν μπόρεσα να βρω πολύ όταν έψαξα για «εκδήλωση ακροατή php».

Οποιαδήποτε βοήθεια θα εκτιμηθεί: αναφορά στον κώδικα σεμινάρια / δείγμα / ακόμα και απλά να μου λέει τι λέξεις-κλειδιά που θα πρέπει να ψάχνετε ή ό, τι πρέπει να μάθουν πρώτα για να γίνει αυτό.

Ευχαριστώ!

Δημοσιεύθηκε 21/12/2011 στις 23:17
χρήστη
Σε άλλες γλώσσες...                            


3 απαντήσεις

ψήφοι
1

Λοιπόν, πρώτα θα πρέπει να κατανοήσουν την ορολογία που χρησιμοποιείτε. PHP δεν είναι ένα γεγονός με γνώμονα τη γλώσσα, είναι ένα αίτημα με γνώμονα τη γλώσσα. Το αίτημα έρχεται στο web-server, PHP να αναλύει και μια απάντηση στέλνεται πίσω στον αιτούντα. Σε κανένα σημείο δεν υπάρχουν γεγονότα ενεργοποιείται ώστε να μπορεί να επεξεργαστεί ή να χειριστεί. Μπορείτε να εφαρμόσετε τις δικές σας «σύστημα εκδήλωση», αλλά τελικά αυτό είναι πολύ περισσότερη δουλειά από ό, τι συνεπάγεται η χρήση-περίπτωσή σας.

Ο καλύτερος τρόπος είναι πιθανό χρησιμοποιώντας AJAX και συνεχώς κάνουν αιτήσεις για την PHP script σας μέχρι να επιστρέψετε τα δεδομένα που ψάχνετε. Σε τελική ανάλυση, θα πρέπει να μάθετε για το XMLHttpRequestαντικείμενο JavaScript. Αφού καταλάβουμε πώς να κάνει ασύγχρονα αιτήματα χρησιμοποιώντας την Javascript για να μπορείτε να δείτε τη setInterval()μέθοδο για το πώς να κάνει κατ 'επανάληψη αίτημα.

Αφού επανειλημμένα να κάνετε ασύγχρονη αιτήσεις θα πρέπει να είναι μια σχετικά απλή διαδικασία δημιουργίας μιας ιστοσελίδας, όπου μπορείτε να ενεργοποιήσετε τα αιτήματα AJAX να σταλεί.


Δεν υπάρχει καμία ανάγκη για έναν βρόχο στον κώδικα PHP σας. Ο βρόχος αποτελεσματικά γίνεται στο άλλο άκρο. Εδώ είναι μια κειμένου ροής εργασίας που μπορείτε να ακολουθήσετε:

  1. Πηγαίνετε σε ένα χώρο σχεδιασμένο για να προκαλέσει AJAX κλήσεις σας και να προκαλέσει τους.
  2. Κάντε αίτηση ασύγχρονη σας για την PHP script σας.
  3. Μέσα PHP script σας ανοίξει το αρχείο XML και ελέγξτε το απαραίτητο περιεχόμενο.
  4. Επιστροφή μια απάντηση με τη μορφή ενός αντικειμένου JSON. Μια απάντηση μπορεί να σημαίνει τα δεδομένα δεν ενημερώθηκε, σημαίνει ότι η άλλη απάντηση τα στοιχεία ενημερώθηκε.
  5. Αναλύσει την απάντηση, αν τα δεδομένα δεν ενημερώθηκε επαναλάβετε από το βήμα (2). Αν ενημερώθηκε τα δεδομένα συνεχίστε με το βήμα (6).
  6. Προβολή ένα εορταστικό χαιρετισμό που ενημερώθηκε τα δεδομένα σας ή μια ειδοποίηση ότι είμαστε ακόμα σε αναμονή για τα στοιχεία που πρέπει να ενημερωθεί. Ίσως μπορείτε να έχετε τον αριθμό των προσπαθεί επίσης, στο πλάι.
Απαντήθηκε 21/12/2011 στις 23:57
πηγή χρήστη

ψήφοι
0

Έκανα κάτι σαν αυτό γράφοντας ένα πρόγραμμα ανάλυσης των εισερχομένων στην PHP. Είσαι καλύτερη επιλογή είναι να:

Κωδικός page1.phpστο οποίο το μόνο που χρειάζεται να κάνετε 2 πράγματα: διαβάστε XML από page2.xmlκαι αν υπάρχει κάτι «νέο» μόλις εκτελέσει τον κώδικα δεδομένων ανάλυσης.

Ρύθμιση μια Cron δουλειά (αν είστε κάτω από linux) να εκτελέσει κάθε 5 λεπτά περίπου (η εντολή Cron είναι κάτι σαν: php /path/to/page1.php). Κατά τον ίδιο τρόπο, αν τρέχετε τα Windows μπορείτε να ρυθμίσετε μια προγραμματισμένη εργασία και να εκτελέσει την ίδια εντολή. Θα πρέπει να γνωρίζετε ότι η πλήρης διαδρομή για την εγκατάσταση της PHP σας θα πρέπει να είναι στην PATHμεταβλητή περιβάλλοντος.

Απαντήθηκε 22/12/2011 στις 00:20
πηγή χρήστη

ψήφοι
1

Έκανα τα εξής:

Αποθηκεύεται αυτόματα στη βάση δεδομένων κάθε φορά που κάτι νέο ήρθε.

Στη συνέχεια έτρεξε ένα php βρόχο που κάθε λίγα λεπτά ελέγχονται για να διαπιστωθεί αν υπάρχει κάτι νέο στη βάση δεδομένων που ταιριάζει με τις παραμέτρους του νέου αυτού συμβάντος (συμπεριλαμβανομένων ότι happenned εντός του χρονικού πλαισίου των τελευταίων λεπτών). Θα χρησιμοποιηθεί flush();και στη συνέχεια sleep(120);στο βρόχο για να πάρει το βρόχο για να συνεχίσει να τρέχει κάθε λίγα λεπτά, έως ότου η νέα info ήρθε στην οποία περίπτωση θα break();ή die();.

Απαντήθηκε 03/01/2012 στις 23:57
πηγή χρήστη

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