Hay otra forma:
Es válida mientras que tu configuración de php.ini no tenga habilitado llenar las variables $argv y $argc en caso de ser el servidor web quien haga la petición.
Entonces, llamás al script desde cron con un parámetro, p. ej. "php miscript.php lagarto=cronjob"
Entonces, al comienzo del script escribes:
Código PHP:
<?php // Comienzo:
if( (empty($argv) || $argv[1] != 'lagarto=cronjob' ) {
exit;
}
// Por aqui sigue tu script
?>
O incluso puedes hacer un script que te cargue los que quieras en tu cron:
Código PHP:
<?php // Comienzo:
if( (empty($argv) || $argv[1] != 'lagarto=cronjob' ) {
exit;
}
if(!empty($argv[2]))
$script = $argv[2];
else
$script = 'script_por_defecto.php';
if(!file_exists('/var/directorio_de_tus_scripts/' . $script)) {
file_put_contents('/var/logs/php_cron/log.log',
date('[H:i:s | d-m-Y]') ." No se pudo abrir el archivo $script\n\n",
FILE_APPEND);
exit;
} else {
define('ENTRADA_CORRECTA', true);
include('/var/directorio_de_tus_scripts/' . $script);
}
Y puedes poner a tus scripts
Código PHP:
if(!defined('ENTRADA_CORRECTA') || defined('ENTRADA_INCORRECTA'))
exit;
al inicio del script
Luego llamas a tu script: "php miscript.php lagarto=cronjob scheduler.php"
y ya está!
Saludos