PHPファイルがあり、一定の間隔でいくつかのタスクを実行します。
PHPファイルをカスタムモジュールフォルダ内に配置しましたが、Drupal drupal_set_message()
のような関数は= PHPファイル。
Drupal関数をこの内部に含める方法PHPファイル?このphpファイルをcronジョブとして実行するように設定するにはどうすればよいですか?
モジュールに hook_cron() を実装し、そこでこれらのタスクを実行する必要があります。
次に、drupalは、デフォルトのcron処理中にこれらのタスクを自動的に実行します。
例としてdrupal_set_message()
を使用した可能性がありますが、これらのメッセージを読み取るユーザーがいないため、hook_cron()実装でその関数を使用しても意味がないことに注意してください。別の方法として、メッセージを watchdog() で記録できます。
Berdirによって報告されたものは正しいです。 cronタスクを正しく設定している場合、hook_cron()
の実装はCronジョブの間に呼び出されます。つまり、次のいずれかのコマンドを実行する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タスク、つまり、実際に2つのcronジョブを設定し、1つはすでに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によって報告されたように、a Drupal cronタスクはdrupal_set_message()
を呼び出さないでください。cronタスクが実行されると、これらのメッセージは表示されません。エラーメッセージを報告する必要がある場合管理者ユーザーが見ることができる場合、コードは watchdog() を呼び出す必要があります。これにはDrupalを完全にブートストラップする必要があります。関数はbootstrap.incで定義されています。