Cron senza crontab: è possibile.

|

Cari webmaster drupal in erba, questa è proprio per voi!

Far partire il cron.php regolarmente, senza avere accesso al server o senza saper gestire un server adesso è possibile!

Inserite queste semplici righe in PHP in un blocco qualunque di quelli che compaiono in modo fisso nelle vostre pagine oppure createne uno appositamente:

<?php
$tmstmp=mktime();
$last=file_get_contents("lastcron.txt");
if(($tmstmp-$last)>(60*60*6))
{
$pntr=fopen('lastcron.txt', 'w');
if(fwrite($pntr, $tmstmp))
{
mail ("dest","cron OK","OK");
include ("cron.php");
}
else
{
mail ("dest","cron FAIL","FAIL");
}
fclose($pntr);
}
?>

Ovviamente sostituite le righe con mail ("dest", con il vostro indirizzo email al posto di dest.

Poi è necessario creare un file di testo che si chiama lascron.txt (potete scriverci dentro quello che volete 123456 va benissimo) e caricarlo sul server nella stessa cartella del file cron.php di Drupal (normalmente la root del vostro accesso FTP). Poi impostate i permessi del file a 666 (rw,rw,rw): io l'ho fatto con FileZilla, click destro con il mouse, attributi, flag su scrittura per tutti... l'importante che sia fatto, il modo non è importante ;)

Fatto!

Il cron.php adesso partirà più o meno regolarmente a seconda di quanto è visitato il vostro sito e vi invierà una mail di conferma o di errore. Nel mio esempio cerco di lanciarlo al massimo ogni 6 ore e non più frequentemente: la riga è quella con (60*60*6), corrisponde ai secondi in 6 ore.

Per i pignoli aggiungo che nel database, tabella 'variable', il record con il campo 'name' uguale a "cron_last" ha nel campo 'value' un valore che può essere utilizzato al posto del meccanismo del file di testo, per il confronto con il timestamp attuale (alla prima riga mktime();).

Reply

The content of this field is kept private and will not be shown publicly.
  • Lines and paragraphs break automatically.
More information about formatting options