Cron işleri ve PHP ile başlarken (Zend Framework)

5 Cevap php

Ben burada onları öğrenmeye başlamak için hiçbir fikrim yok o yüzden cron işleri konuya tamamen yeni duyuyorum; ne zaman, neden, nasıl ya da genel olarak benim Zend Framework uygulamasında, veya PHP ile bunları kullanmak için.

Herkes bir örnek, süreci açıklamak, ya da başlamak için bazı iyi kaynaklar tavsiye edebilir misiniz?

5 Cevap

Cron işleri Linux işletim sistemindeki görevleri otomatikleştirmek için bir mekanizmadır. Ve witn Zend Framework yapmak oldukça az şey var. Çerçeve olsa php gelişmiş bir cron görevi geliştirmeye yardımcı olabilir. Ama sonra kabuk cron işini kurmak zorunda olacak.

"Cron işi kurmak için nasıl" üstündeki bu bağlantıyı ortaya için google'da:

http://www.adminschoice.com/docs/crontab.htm

Ben bu yazı size yardımcı olacaktır eminim.

P.S.

: Yürütmek için bir komut olarak gibi bir şey koymak gerekir

/usr/local/bin/php -f <path_to_your_php_script>

ilk yol makinenizde farklı olabilir php cli yürütülebilir, tam yoludur. Bu komutu veren tarafından emin olabilirsiniz:

which php

Cron işleri ile iyi şanslar ;)

Belki gerçek hayatta örnek yardımcı olacaktır. Birkaç yıl önce, ben Zend Framework kullanarak bir etkinlik takvimi proje üzerinde çalıştı. Bu takvimde, bir kullanıcı bir olay oluşturabilir ve olay 1 veya daha fazla tarih eklemek. Doğal olarak, ben bu hayata bir benim veritabanında katılmak için-bir-çok, ama bu bir tarih eklemek için, olay ilk var olması anlamına geliyordu. Ancak kullanıcılar tarihleri ​​while onlar after onlar bir olay yarattık değil, olay yaratmak edildi eklemek için izin istedim. Diğer bir deyişle, ben aynı zamanda bir olayın tüm yönleriyle düzenlemek ve onlar tıklandığında sadece göndermek için kullanıcı istedim "kurtarmak."

Ben kullanıcı bir olay kaydını oluştururken başladığında veritabanında yeni bir boş bir olay kaydı takarak sorunu çözdü. Bu boş kayıt doldurulur ve kullanıcı "kaydetmek" tıkladığında kaydedilebilir veya kullanıcı "iptal" tıkladığında silinir alır. Sorun kullanıcılar "iptal" tıklayarak olmadan uzağa gidildiğinde oluştu ve boş olay kaydı veritabanında bırakıldı. Sonunda, veritabanı bu anlamsız boş olayları ile doldurun ve çirkin şeyler alabilirsiniz.

Ben, diğer şeyler arasında, 24 saatten daha eski kaydedilmemiş tüm kayıtları silinen, "bakım ()" adlı bir işlev yazdı. Ben gece koştu ve bakım () koştum, bir komut satırı php script yürütülen bir cron işi kurmak.

Sizin için bir cron işi kullanabilirsiniz diğer şeyler:

  • Yeni kullanıcılar için e-postaları toplu gönderin. (Her 5 dakikada?)
  • Güncelleme kullanıcı istatistikleri (her saat?)
  • Sunucular trafik çarptı değilken kaynak-yoğun işlemleri gerçekleştirin (gece yarısı Her gece veya Pazar geceleri haftada bir kez?)
  • (Jeff "bant" dediği) bir kullanıcı isteğine yanıt olarak oluşmaz şey başka bir olay.

Ayrıca how to store cron jobs with ZF intersted olabilir

İşte Zend Framework ile bir cron sisteminin sizin implentation yapmanın iyi bir şekilde bir bağlantı:

Cron tasks in Zend Framework apps

Personnaly, çok parametre dinamik olabilir adapte ettik, ancak taban aynı olduğunu :-)

Zend Framework şekilde gevşek birleştiğinde bileşenleri bir koleksiyon olarak size CLI komut dahil olmak üzere her bir PHP komut dosyası gibi bileşenlerini kullanabilirsiniz. Eğer include_path için Zend Framework kütüphane yolunu eklemek zorunda PHP ilgili Zend Framework sınıfları bulabilirsiniz, emin olsa yapmak zorundayız. Sonra ayarlayabileceğiniz Zend_Loader_Autoloader (ZF> = 1.8) veya Zend_Loader (ZF <1,8) hayatı kolaylaştırmak için kullanıyor autoloading. Şimdi, size at will kullanabileceğiniz tüm Zend Framework bileşenlerine erişimi olmalıdır.

Her komut dosyası veya program gibi bu PHP komut dosyası doğal bir cron işi kullanılabilir. Unutulmaması gereken bir şey daha emin cron işleri çalıştıran kullanıcı Zend Framework kütüphane yoluna okuma erişimi vardır aksi halde PHP Zend Framework dosyalarını okuyamaz emin olmak gerekir olmasıdır.

Eğer soru CLI komut dosyalarında MVC bileşenin kullanımı ile ilgili hedef aldı iseniz, ben bu konuda herhangi bir deneyimi yok itiraf etmeliyim. Ben bir ihmal değil çaba uygulamak için yapılması gerektiğini varsayalım istiyorum uygun istek-, tepki, distpachter-ve rota-sınıfları.

EDIT:

this article daha fazla bilgi için bakınız.