Bonjour, je souhaiterais exécuter tous les jours un script php (qui récupère 4 fichiers via ftp, les mouline pour créer 2 fichiers csv sur mon hébergement).
Cela fonctionne quand j'affiche la page web qui contient le code php mais il faut que j'affiche manuellement cette pas dans un navigateur.
J'aimerais que mon script se lance tous les jours à 11h00.
Y-a-t-il un moyen de réaliser cela par CRON ?
Est-ce que le script php est le fichier lui-même rattaché à CRON ou bien puis je demander à mon script php juste d'ouvrir la page avec l'url ? Et cette page executera le script qu'elle contient ?
Merci d'avance.
Ouverture automatique d'une page tous les jours
Related questions
- Connexion à mon compte client
142483
13.02.2019 09:51
- Serveur non sécurisé, celui-ci ne supporte pas FTP sur TLS
120083
03.09.2018 14:46
- reCAPTCHA erreur pour le propriétaire du site : clé de site non valide
105077
14.02.2019 16:17
- [FAQ] Comment mettre à jour mon site pour supporter Apache 2.4 ?
91950
28.07.2017 11:39
- Passage en php 7.4
89527
30.06.2020 05:05
- Augmenter taille PHP Post Max Size sur mutualisé ?
85164
04.12.2019 21:52
- The requested URL / was not found on this server
84315
02.03.2017 18:25
- NextCloud sur mutualisé
84114
07.04.2017 08:42
- Ce site est inaccessible Impossible de trouver l'adresse DNS du serveur
84028
16.10.2016 16:24
- Deploy d'un projet Node JS
83960
12.10.2016 20:18
Je n'ai pas compris la distinction que tu fais entre ce que tu appelles "script PHP" et "page web", mais le CRON permet d'exécuter tout fichier PHP.
A prendre en compte :
- Lorsque tu indiqueras une exécution tous les jours à 11h, l'exécution se fera entre 11h et 12h, il n'y a pas plus précis
- Certaines variables comme $_SERVER ne sont pas accessibles via lancement CRON
Merci pour ta réponse.
En fait :
- soit le code (qui rapatrie les fichiers ftp et les traite en un fichier csv) est inclus dans le fichier php exécuté par CRON avec la limite je crois de génération de fichier (ici csv) par le code limitée à 5Mo.
- soit le code du fichier php exécuté par CRON contiendra juste ouvrir une page PHP qui contiendra le code qui rapatrie les fichiers ftp pour les traiter en générer un csv sans limite de taille à 5Mo. Mais comment ouvrir une page automatiquement par php, avec header("location: page1.php") mais ça ne s'ouvrira nulle part.
Peut-être qu'il existe sur le web un abonnement pour faire ouvrir une page web tout les jours à heure fixe ?
Incroyable, pour la tâche CRON j'ai mis Commande à exécuter : www/lvc/24sur24/indexo.php pour tester.
Elle se retrouve un peu plus tard( après avoir tenté de l'exécuter ?), en www/lvc/24sur24/indexo/php.
Le point s'est transformé en slash. Je ne comprends pas comment ça marche. du coup je ne peux pas tester mon code. Normal ?
Etonnant. J'ai aussi des tâches CRON avec des scripts PHP situés dans une arbo de 2 ou 3 répertoires de profondeur et je n'ai pas ce problème.
Surtout si tu as bien mis le type de langage PHP et la version.
Du coup j'ai réussi en renommant le fichier script.php, il reste activé en vert et le chemin est le bon www/lvc/24sur24/script.php il faut bien commencer à www ? Par contre il doit s'exécuter toutes les heures mais aucune trace dans le répertoire d'accueil du résultat (4 fichiers xls rapatriés via ftp) , ni dans la log de CRON qui reste bloquée sur hier. Du coup je ne sais pas si ça fait quelque chose ou non.
Ah mais la log n'est accessible que le lendemain à 2h du matin, c'est pour ça ? non
Bon du coup je suis bloqué j'ai l'impression que les CRON ne fonctionnent pas (rien sur la log depuis hier minuit, rien dans le répertoire de destination qui aurait prouvé que le code s'était lancé). Je viens de tester de créer une nouvelle tâche qui fait juste
echo "titi";
?> pour qu'elle se lance toutes les heures. Je verrai si la log écrit quelque chose.
Essayes de mettre ces 3 lignes au tout début de ton code, cela permet d'afficher dans les logs toutes les erreurs PHP :
error_reporting(E_ALL);
ini_set('display_errors', '1');
ini_set('log_errors', '1');
Merci pour ta piste. C'est sympa d'essayer d'aider ;). Je note ce conseil pour l'error reporting.
Il y a du nouveau, ça a l'air de fonctionner finalement mais :
- mon ftp_get pour rapatrier un fichier était en relatif :
ftp_get($ftp, "./CA2607/".$annee."/CA2607_".$hier."_Q.csv", "./CA2607/CA2607_".$hier."_Q.csv", FTP_BINARY))
et je regardais dans le répertoire du script si les fichiers étaient rapatriés via ftp. Ils ne l'ont jamais été.
En fait le fichier s'est rapatrié à la racine de mon hébergement à côté de mon répertoire www.
Et vu que la log d'hier n'est disponible que ce matin je pensais que rien ne se passait.
**Ce que je retiens** :
- pas besoin d'ouvrir une page web tous les jours pour exécuter mon php, CRON peut le faire en exécutant que le code. La solution est bien plus élégante,
- il y a probablement un bug dans le chemin du CRON si le fichier s'appelle www/lvc/24sur24/indexo.php il est transformé en www/lvc/24sur24/indexo/php (plus précisément indexo.php se transforme en indexo/php ) peut-être que le nom ressemble trop à index.php ?
- la log CRON n'est accessible que le lendemain,
- et qu'il faut éviter les chemins relatifs dans un script CRON.
Merci encore pour l'aide apportée.