Sürekli PHP komut dosyasını çalıştırın

8 Cevap

Ben zaman girdilerine sahip MySQL bir veritabanı var. Zaman 1000'den fazla kayıt bulunmaktadır. Ben zaman ayıklamak ve o anda tam olarak bir PHP komut dosyası çalıştırmak istiyorum ..

Ben zaman kontrol hangi sürekli bir PHP komut dosyası çalıştırmayı denedim, ama benim sunucu daha 60 saniye için komut dosyasını çalıştırmak için izin vermez.

EDIT. Ben veritabanını her saniye kontrol etmek zorunda. Herhangi bir alternatif var mı?

8 Cevap

Armut paketi, System_Daemon kullanın

http://pear.php.net/package/System_Daemon/

Unix'in cron sahipsiniz.

Siz komut dosyası çalıştırmak için bazı dış hizmeti gerekir. Unix kutusunda, olacağını cron. Windows kutusunda, kullanmak Task Scheduler.

Eğer bir sunucu daemon olarak yazma işlemi düşündünüz mü. Bu başlatmak ve sonsuza kadar bir süre döngü çalışır. Her birkaç dakikada ya da ancak istediğiniz sıklıkta bu çalışma kez sonraki x dakikada bir kontrol olabilir. Eğer çalıştırmak için gereken komut tekme etrafında o zaman geldiğinde size istekleri sıraya ve. Ben ... cron size rasgele zamanlarda gelecekteki olayları planlamak için çalışıyoruz beri istediğiniz şeyi olduğunu sanmıyorum Ve ben o anda her saniye denemek ve db kontrol etmek için kullandığınız ne emin değilim.

Veritabanından okuma ve istenilen zamanda çalışacak komut dosyası yapmak için crontab girdilerini eklemek için bir PHP komut dosyası yazın

Eğer çalışmasını sağlamak yapar sağlamak gerekir çünkü en azından bir süreç çalışan tutmak, çok iyi bir çözüm değildir. Muhtemelen bir sonraki olay ne olacak ne zaman biliyorum - bu yüzden zamanlama 'ATD' kullanmalısınız - tetiklendiği zaman zaman ve nasıl sonraki işi planlamak için komut da çalışması gerekir.

Bu işler zincirleme anlamına gelmez - ve biri başarısızlık zincirini kırar, ayrıca ATD çoğu uygulamaları taneciklilik oldukça yüksek olabilir.

Sen Nagios gibi daha sofistike bir planlama aracı veya DJB en daemontools veya Oracle'ın OPMN gibi bir süreç izleme türü bir yaklaşım kullanarak bakmak isteyebilirsiniz.

C.

Belirli bir süre için PHP komut dosyası duraklar ve sonra devam eder sleep(arg) işlevini kullanmanız gerekir.

sleep(50); //Pauses

myFunction(); //Runs after the pause

Örneğin, bu 50 saniye için komut dosyası duraklar.

DJB en daemontools harika. Kalan gerçek otuzbirciyide oynuyor olsa Yani, görünüşe göre, systemd ve / veya Sonradan görme olduğunu.