Cron : Appeler un fichier php grâce à un autre fichier php ?
BMPCreated with Sketch.BMPZIPCreated with Sketch.ZIPXLSCreated with Sketch.XLSTXTCreated with Sketch.TXTPPTCreated with Sketch.PPTPNGCreated with Sketch.PNGPDFCreated with Sketch.PDFJPGCreated with Sketch.JPGGIFCreated with Sketch.GIFDOCCreated with Sketch.DOC Error Created with Sketch.
Question

Cron : Appeler un fichier php grâce à un autre fichier php ?

by
AurelienB12
Created on 2019-09-04 16:35:17 (edited on 2024-09-04 13:56:59) in Hébergements Web

Bonjour à tous,

Je me casse la tête avec Cron : je souhaiterais simplement qu'un fichier php, appelé par Cron, exécute un autre fichier php.

Voici mon fichier cron_file.php appelé par une commande CRON :


// Essai 1
define('ROOT',dirname( __FILE__ ));
exec("php -f ".ROOT."/script.php");

// Essai 2
exec("php -f /home/icolleu/www/script.php");

// Essai 3
$chemin = __DIR__;
exec("php -f ".$chemin."/script.php");

// Essai 4
exec("php -f ".__DIR__."/script.php");

?>

Le fichier script.php suivant ne fait que placer la valeur 'success' dans ma base de données, dans le seul but de savoir s'il a bien été executé :


$mysqli = new mysqli("database","login","pwd","database");
$mysqli->query(" UPDATE divers SET valeur_divers = 'success' WHERE nom_divers = 'test' ");
$mysqli->close();

?>

Mon problème est que le fichier 'script.php' n'est jamais exécuté (quelle que que soit la syntaxe) lorsque CRON appelle le fichier 'cron_file.php'. Cependant, cela marche très bien si j'appelle 'cron_file.php' par mon naviguateur.

Je précise :
- que je suis en hébergement mutualisé (Cloud Web)
- que j'ai bien lu la documentation OVH sur Cron, notamment avec le chemin défini par __DIR__
- vous allez me dire "tu n'as qu'à appeler directement 'script.php' par Cron". En fait, l'étape suivante est d'appeler 'script.php' avec des paramètres dans la commande, ce qu'on ne peut pas faire directement avec Cron.

Pouvez-vous m'aider ?

Est-ce exec() qui est empêché d’exécution en "Crontab" ?

Y-a-t-il d'autres astuces pour arriver à mes fins ?

Je vous remercie

Aurélien


2 Replies ( Latest reply on 2019-09-04 18:01:46 by
CM63
)


En fait, l'étape suivante est d'appeler 'script.php' avec des paramètres dans la commande, ce qu'on ne peut pas faire directement avec Cron.


Pourquoi tu n'appelles pas le second script en tant que routine du premier plutôt qu'en tant que script? Et là tu pourras passer des paramètres.

Bonjour CM63,

Merci pour votre réponse.

Par 'routine', tu veux dire une fonction (avec paramètre d'entrée) qui appellerait mon script.php grâce à un include ? Il faut que j'y réfléchisse, ce pourrait être une solution en effet.

Sinon, je suis quand-même curieux de comprendre l'origine de mon problème (exec qui est bloqué ou pas par OVH).

Aurélien

Non le exec() n'est pas bloqué par OVH, je l'utilise souvent, mais pas pour faire php -f , si j'avais eu à faire cela j'aurais plutôt fait une routine php. Moi j'utilise exec() pour faire des archives (tar cvf ) ou pour créer des liens (ln -s) .