it-swarm-ko.tech

Drupal 7의 Cron 작업

일관된 간격으로 일부 작업을 수행하는 PHP 파일이 있습니다.

PHP 파일을 사용자 정의 모듈 폴더 안에 넣었지만 Drupal drupal_set_message()과 같은 함수는 = PHP 파일.

이 Drupal 파일 내에 PHP 함수를 포함시키는 방법은 무엇입니까? cron 작업으로 실행되도록이 PHP 파일을 어떻게 설정합니까?

4
ayush

모듈에서 hook_cron () 을 구현하고이 작업을 실행해야합니다.

그런 다음 drupal은 기본 크론 처리 중에 이러한 작업을 자동으로 실행합니다.

아마도 drupal_set_message()을 예로 들었을 것입니다. 그러나 이러한 메시지를 읽을 사용자가 없기 때문에 hook_cron () 구현에서 해당 함수를 사용하는 것은 의미가 없습니다. 대안으로 watchdog () 를 사용하여 메시지를 기록 할 수 있습니다.

12
Berdir

Berdir이보고 한 내용은 정확합니다. cron 태스크를 올바르게 설정 한 경우 Cron 작업 중에 hook_cron() 구현이 호출됩니다. 이는 다음 명령 중 하나를 실행하는 크론 작업을 추가해야 함을 의미합니다.

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

내가 기억하는 한 Drupal 관리 페이지에보고 된 cron 키를 사용해야합니다.

어떤 이유로 든 (당신이 그렇게해야 할 이유가 있는지 의심 스럽다면) PHP 스크립트를 실행하고 모든 Drupal cron 작업은 실제로 두 개의 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