Některé moduly vyžadují službu cron. Zvolte si proto jednu z následujících možností:
Je spouštěn na základě návštěv uživatelů webu. V admin/config/system/cron (Konfigurace, Cron) je možné nastavit pravidelnost opakování.
Vestavěný cron je vhodné "vypnout" (zrychlí se tak první načtení stránky) a nastavit cron jiným způsobem (webhosting, server atd.). ![]()
Další rozšíření:
Většina poskytovatelů nabízí zapnutí služby cron v administraci webhostingu. Po nastavení této služby vypněte spouštění vestavěného cronu v konfiguraci Drupalu.
Použijte modul Drupalu s názvem Poormanscron.
Zaregistrujte se na stránkách www.webcron.org a vytvořte si novou úlohu pro Váš web.
Do souboru /etc/crontab vložte (YOURKEY je možné zjistit v admin/reports/status (Logy, Hlášení stavu)
0,30 * * * * root /usr/bin/wget -O - -q http://example.com/cron.php?cron_key=YOURKEYDo souboru /etc/crontab vložte
0 * * * * root /usr/bin/wget -O - -q http://example.com/cron.php?cron_key=YOURKEYJiný způsob:
| Čtení | Zápis | Spouštění | |
|---|---|---|---|
| Vlastník | Ano | Ano | Ano |
| Skupina | Ano | Ne | Ano |
| Ostatni | Ano | Ne | Ano |
#!/bin/sh
/usr/bin/wget -O - -q http://example.com/cron.php?cron_key=YOURKEYPokud máte přístup k serveru omezen pouze na některé IP adresy, je vhodné příkazu wget nařídit použití lokálního rozhraní:
#!/bin/sh
/usr/bin/wget -O - -q --bind-address=127.0.0.1
http://example.com/cron.php?cron_key=YOURKEY| Čtení | Zápis | Spouštění | |
|---|---|---|---|
| Vlastník | Ano | Ano | Ano |
| Skupina | Ne | Ne | Ne |
| Ostatni | Ne | Ne | Ne |
<?php
require('http://example.com/cron.php?cron_key=YOURKEY');
?>nebo (záleží na webhostingu)
<?php
file_get_contents('http://example.com/cron.php?cron_key=YOURKEY');
?>Bližší info viz Drupal 7: Running cron from the command line.
#!/usr/bin/env /usr/php53/bin/php
<?php
// Checks that the arguments are supplied, if not display help information.
if (in_array($argv, array('--help')) || $argc != 5) {
?>
<?php
} else {
// Loop through arguments and extract the cron key and drupal root path.
for ($i = 1; $i < $argc; $i++) {
switch ($argv[$i]) {
case '--key':
$i++;
$key = $argv[$i];
break;
case '--root':
$i++;
$path = $argv[$i];
break;
}
}
chdir($path);
// Sets script name
$_SERVER['SCRIPT_NAME'] = $argv[0];
// Values as copied from drupal.sh
$_SERVER['HTTP_HOST'] = 'default';
$_SERVER['REMOTE_ADDR'] = '127.0.0.1';
$_SERVER['SERVER_SOFTWARE'] = NULL;
$_SERVER['REQUEST_METHOD'] = 'GET';
$_SERVER['QUERY_STRING'] = '';
$_SERVER['HTTP_USER_AGENT'] = 'console';
// Set cron key get variable to use below code with as
// little modification as possible.
$_GET['cron_key'] = $key;
define('DRUPAL_ROOT', $path);
// Code below is almost verbatim from cron.php, just the messages for
// watchdog have been changed to indicate that the problem originated from
// this script.
include_once DRUPAL_ROOT . '/includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
if (!isset($_GET['cron_key']) || variable_get('cron_key', 'drupal') != $_GET['cron_key']) {
watchdog('cron', "Cron could not run via $argv[0] because an invalid key was used.", array(), WATCHDOG_NOTICE);
drupal_access_denied();
} elseif (variable_get('maintenance_mode', 0)) {
watchdog('cron', "Cron could not run via $argv[0] because the site is in maintenance mode.", array(), WATCHDOG_NOTICE);
drupal_access_denied();
} else {
drupal_cron_run();
}
}
<?php
shell_exec("/usr/php53/bin/php /data/web/hosting.com/sub/website.com/sites/localcron.php --key IFEVzAgi8f93LzbHIH8Tz_teLnU7qF456OZRabpxAMg --root '/data/web/hosting.com/sub/website.com/' ");