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=YOURKEY
Do souboru /etc/crontab vložte
0 * * * * root /usr/bin/wget -O - -q http://example.com/cron.php?cron_key=YOURKEY
Jiný 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=YOURKEY
Pokud 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/' ");