it-swarm.asia

وظائف كرون في Drupal 7

لدي ملف PHP يقوم ببعض المهام في فترات متناسقة.

لقد وضعت هذا الملف PHP داخل مجلد الوحدة النمطية المخصصة ، لكنني وجدت أن Drupal مثل drupal_set_message() غير متوفرة داخل = PHP ملف.

كيف أقوم بتضمين Drupal وظائف داخل هذا PHP ملف؟ كيف أقوم بإعداد ملف php ليتم تشغيله كوظيفة cron؟

4
ayush

تحتاج إلى تنفيذ hook_cron () في وحدتك وتنفيذ هذه المهام هناك.

بعد ذلك ، drupal ستنفذ هذه المهام تلقائيًا أثناء معالجة cron الافتراضية.

ربما استخدمت drupal_set_message() كمثال فقط ولكن لاحظ أن استخدام هذه الوظيفة في تطبيق hook_cron () لا معنى له لأنه لا يوجد مستخدم لقراءة هذه الرسائل. كبديل ، يمكنك تسجيل الرسائل باستخدام watchdog () .

12
Berdir

ما قاله Berdir صحيح ؛ يتم تنفيذ تطبيقات hook_cron() أثناء مهام Cron ، إذا قمت بتعيين مهمة cron بشكل صحيح. هذا يعني أنك بحاجة إلى إضافة مهمة cron التي تنفذ أحد الأوامر التالية:

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

بقدر ما أتذكر ، تحتاج أيضًا إلى استخدام مفتاح cron الذي تم الإبلاغ عنه في Drupal الصفحات الإدارية.

إذا ، لأي سبب (أشك في وجود أي سبب للقيام بذلك) تحتاج فقط إلى تنفيذ هذا النص النصي [PHP وليس جميع Drupal مهام cron ، مما يعني أن لقد قمت بالفعل بتعيين وظيفتين كرون وواحدة تقوم بالفعل بتنفيذ مهام Drupal cron ، ثم يجب عليك إضافة الأسطر التالية في بداية ملف PHP الذي تحاول تنفيذ مهمة cron :

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

عند القيام بذلك ، سيتمكن ملف PHP من الوصول إلى جميع الوظائف المتاحة في bootstrap.inc . إذا كنت بحاجة إلى وظيفة متاحة في ملف تضمين Drupal آخر ، فأنت بحاجة إلى تضمين هذا الملف مع require_once() ؛ إذا كنت بحاجة إلى وظيفة متاحة من وحدة Drupal ، فأنت بحاجة إلى إضافة drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL) بعد سطور require_once().
إذا كنت بحاجة إلى وظيفة من وحدة نمطية ، فعليك حقًا تنفيذ وحدة مخصصة (إذا لم يكن لديك واحدة بالفعل) تنفذ hook_cron() وتتضمن PHP الملف يجب عليك تنفيذه.

كما أفاد Berdir ، فإن مهمة [Drupal cron يجب ألا تستدعي drupal_set_message() لأنه عندما يتم تنفيذ مهام cron ، لن تكون هذه الرسائل مرئية. إذا كنت بحاجة إلى الإبلاغ عن رسالة خطأ يمكن أن يراها المستخدمون المسؤولون ، فعندئذٍ يحتاج الرمز إلى الاتصال watchdog () ، والذي يتطلب Drupal ليتم التمهيد بالكامل ؛ يتم تعريف الوظيفة في ملف bootstrap.inc.

3
kiamlaluno