web-gelistirme-sc.com

Drupal 7 içindeki Cron işleri

Tutarlı aralıklarla bazı görevleri yapan bir PHP dosyam var).

Bu PHP dosyasını özel modül klasörünün içine yerleştirdim, ancak Drupal drupal_set_message() gibi işlevlerin = PHP dosya.

Drupal Bu PHP dosya içindeki işlevleri nasıl ekleyebilirim?) Bu php dosyasını bir cron işi olarak çalışacak şekilde nasıl ayarlayabilirim?

4
ayush

Modülünüze hook_cron () uygulamanız ve bu görevleri orada gerçekleştirmeniz gerekir.

Ardından, drupal varsayılan cron işleme sırasında bu görevleri otomatik olarak yürütür.

Muhtemelen drupal_set_message() işlevini yalnızca örnek olarak kullandınız, ancak bu işlevi bir hook_cron () uygulamasında kullanmanın bir anlamı olmadığını unutmayın, çünkü bu iletileri okuyacak bir kullanıcı yoktur. Alternatif olarak, mesajları watchdog () ile günlüğe kaydedebilirsiniz.

12
Berdir

Berdir tarafından bildirilenler doğrudur; hook_cron() uygulamaları, cron görevini doğru ayarladıysanız, Cron işleri sırasında çağrılır. Bu, aşağıdaki komutlardan birini yürüten bir cron işi eklemeniz gerektiği anlamına gelir:

/usr/bin/lynx -source http://example.com/cron.php > /dev/null 2>&1
curl --silent --compressed http://example.com/cron.php

Hatırladığım kadarıyla, Drupal yönetim sayfalarında bildirilen cron anahtarını da kullanmanız gerekiyor.

Herhangi bir nedenle (bunun için herhangi bir sebep olduğundan şüphe duyuyorsanız), sadece PHP komut dosyasını yürütmeniz ve tüm Drupal cron görevlerini yürütmemeniz gerekiyor, yani iki cron işi ve biri zaten Drupal cron görevlerini yürütüyorsa, cron görevini yürütmeye çalıştığınız PHP dosyasının başına aşağıdaki satırları eklemelisiniz:

define('DRUPAL_ROOT', 'Set here the directory where Drupal is installed');
require_once DRUPAL_ROOT . '/includes/bootstrap.inc';

Bunu yaptığınızda, PHP dosyası bootstrap.inc içindeki tüm işlevlere erişebilir. Başka bir Drupal içerme dosyasında bulunan bir işleve ihtiyacınız varsa, o dosyayı require_once() ile eklemeniz gerekir; Drupal modülünden kullanılabilen bir işleve ihtiyacınız varsa, drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL) satırından sonra require_once() eklemeniz gerekir.
Bir modülden bir işleve ihtiyacınız varsa, o zaman hook_cron() uygulayan ve PHP içeren özel bir modül (zaten yoksa) uygulamalısınız. dosyayı yürütmeniz gerekir.

Berdir tarafından bildirildiği gibi, bir Drupal cron görevi drupal_set_message() öğesini çağırmamalıdır, çünkü cron görevleri yürütüldüğünde bu mesajlar görünmez. Yönetici kullanıcıların görebileceği bir hata mesajı bildirmeniz gerekiyorsa, kodun watchdog () öğesini çağırması gerekir; bunun için Drupal tam önyükleme yapılması gerekir; işlev bootstrap.inc dosyasında tanımlanır.

3
kiamlaluno