PHP bir Etkinlik İşleyici'yi Oluşturma XML içeriğini bekleyen

oy
18

Ben bir olay dinleyicisi oluşturmanız gerekir. Ben bir acemi kadar nazik olacağım :)

Temelde ben sayfa1.php (php dosyası) üzerine değilim; Bir noktada alınan gereken bazı bilgiler için page2.xml (xml dosyası) kontrol gitmek için bir döngü içine istiyorum. Ya bunu hep kontrol etmek veya bekleyin ve bazı bilgiler var alınıp alınmadığını her 5 dakika kadar görmek. Bunlardan Ya benim için çalışıyor.

hiçbir bilgi, birkaç dakika sonra alındı, o zaman ben (o alınana kadar), aksi takdirde tekrar döngü çalıştırmak ileriye taşımak ve benim yeni alınan bilgilerle bir şeyler yapmak istiyorum. Ben bir sorunum yok bu kısmı, sadece olay dinleyicisi kendisi. Ben her yerde kullanıyor olmalıdır işlevini bulamadık. :( Ben sadece kontrol etmek ve sık sık xml dosyasının içeriği almak gerekir.

Sadece bunu yapar bir işlev yoksa bu konuda gitmeli nasıl bu kadar emin değilim, ama olay dinleyicisi php araması yaparken pek bulamadık.

Herhangi bir yardım mutluluk duyacağız: referansı öğreticiler / örnek kod / hatta sadece ben aradığınız veya bunu yapmak için önce öğrenmemiz gerekiyor ne olması gerektiği anahtar bana.

Teşekkürler!

Oluştur 21/12/2011 saat 23:17
kullanıcı
Diğer dillerde...                            


3 cevaplar

oy
1

Öncelikle kullanmakta olduğunuz terminolojiyi anlamalıdır. PHP bir istek güdümlü dildir, olay kaynaklı dil değildir. Bir istek PHP ayrıştırır ve bir yanıt geri istekte gönderilir, web sunucusuna girer. Hiçbir noktada etkinlikler işlemek veya işleyebileceği orada tetiklenen bulunmaktadır. Kendi "Olay sistemi" uygulayabilirsiniz ama sonuçta bu sizin kullanım-case ne demek çok daha fazla bir iştir.

Yapabileceğiniz en iyi şey muhtemelen AJAX kullanan ve aradığınız verileri dönene kadar sürekli PHP betiğinize talepleri oluşturuyor. Sonuçta Hakkında bilgi almak gerekecektir XMLHttpRequestJavaScript nesnesi. Eğer asenkron istekler bakabilirsiniz JavaScript kullanan yapmak anlamak sonra setInterval()bir istek defalarca kullanılabilir hale getirme yöntemiyle.

Tekrar tekrar asenkron istekleri yapabilir kez size gönderilmek üzere AJAX isteklerini tetikleyebilir bir web sayfası oluşturma nispeten basit bir süreç olmalıdır.


PHP kodu bir döngü gerek yoktur. döngü etkili bir diğer ucunda yapılır. Burada arkasından gelebilecek bir metinsel iş akışı verilmiştir:

  1. AJAX çağrıları tetikleyebilir ve bunları tetiklemek için tasarlanmış bir siteye gidin.
  2. PHP senaryoya zaman uyumsuz istekte bulunun.
  3. PHP komut İçerisinde XML dosyasını açmak ve gerekli içeriğin kontrol.
  4. JSON nesnesi biçiminde bir yanıt döndürür. Verileri anlamına gelebilir Bir yanıt diğer müdahale verileri güncellendi demektir güncellenmedi.
  5. veriler, adım (2) ile ilgili tekrar güncellenmiş değil ise, bir yanıt ayrıştırın. veri güncellendi ise (6) adıma geçin.
  6. Veri güncellendi bir kutlama tebrik veya verilerin güncellenmesi için hala bekliyoruz bir uyarı görüntüler. Belki kenarda yanı denemeden sayı olabilir.
Cevap 21/12/2011 saat 23:57
kaynak kullanıcı

oy
0

Bu PHP bir gelen kutusu ayrıştırıcı yazmak gibi bir şey yaptı. Sen seçenek için en iyi konum:

Kod page1.phpsadece 2 şey yapmanız gereken hangi: XML okumak page2.xmlve bir şey varsa sadece veri-ayrıştırma kodu "yeni" yürütün.

Kur bir Cron işi (eğer linux altında iseniz) her 5 dakika kadar yürütmek için (Cron komut gibi bir şey: php /path/to/page1.php). Aynı şekilde, kurulum zamanlanmış bir görevi can Windows çalıştıran ve aynı komutu çalıştırın eğer. PHP kurulumuna tam yolu olmalıdır unutmayın PATHortam değişkeni.

Cevap 22/12/2011 saat 00:20
kaynak kullanıcı

oy
1

Aşağıdaki yaptı:

Otomatik olarak veritabanına yeni gelen her zaman bir şeyler kurtardı.

Sonra birkaç dakikada (bu son birkaç dakika zaman dilimi içinde happenned da dahil olmak üzere) bu yeni olayın parametrelerini uyan veritabanında yeni bir şey olup olmadığını görmek için kontrol bir php döngü koştu. Kullandığım flush();sonra ve sleep(120);yeni bilgiler hangi olacak durumda gelene kadar, her birkaç dakikada bir çalışan tutmak için döngü elde etmek döngüde break();veya die();.

Cevap 03/01/2012 saat 23:57
kaynak kullanıcı

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