Bonjour,
Voila je rencontre un petit problème avec mon code.
Je suis chez OVH avec cette config PHP et tache Cron :
version php globale 'PHP 5.6' moteur 'phpcgi' environnement 'production'
mes paramètres dans tache CRON OVH :
./www/cron.php toutes les heures, tous les jours, toues les mois PHP 5.6
Je voudrais déclancher mon script cron.php, qui doit remplir une table de la base de données
le script se déclenche bien suite aux different logs OVH
par contre à part les echo 'xxxxxxx' du script php qui s'affichent bien, le reste du script refuse de s'executer (remplissage de la tale de labase de données ne se fait pas.
J'ai aussi mis les chmod 755 pour cron.php pour le rendre executable.
le fichier texte pour remplir la base de données se trouve dans ./www comme pour le script cron.php
voici le script php :
#!/usr/bin/php5 (est nécessaire cette ligne ??)
<?php
echo "connexion bdd : ";
$db = mysql_connect('xxxxx', 'xxxxxx', 'xxxxx);
set_time_limit(0);
// on sélectionne la base xxxxxxx
mysql_select_db('xxxxxxx',$db);
// on vide la table xxx
mysql_query('TRUNCATE TABLE xxx;');
// mode UTF8
mysql_query("SET NAMES UTF8");
// définie le fichers
//$file_to_import="/home/your_directory_where_the_file_is//export_test.txt";
$file_to_import="export_test.txt";
echo "\n<br>Fichier à importer : $file_to_import";
echo "\n<br>Intégration des données du fichier dans la table";
$sql_import = "LOAD DATA LOCAL INFILE '$file_to_import' INTO TABLE `xxx` FIELDS TERMINATED BY '|' ESCAPED BY '' LINES TERMINATED BY '\n'";
mysql_query($sql_import) or die('non mis à jour'.mysql_error());
echo "\n<br>Suppression de la ligne d'entete";
mysql_query("DELETE FROM `xxx` WHERE ref_num_vo='ref num vo' and marque='marque' and modele='modele'");
echo "\nTerminé.";
mysql_close();
?>
Que la Table de la base de données se remplisse à l'aide du fichier .txt (export_test.txt") en utilisant la tache CRON de OVH;
CRON déclenche très bien le fichier cron.php c'est ok, mais la table se remplie seulement si je met l'URL dans le navigateur, mais ne se remplie pas avec CRON de OVH.
Je ne sais plus du tout de quoi cela peut venir à force d'essayer entre les config des version php, les version de CRON etc. et le script en lui même... Merci de m'aider.
J'obtiens que les messages dans les divers 'echo', que je retrouve en regardant dans les logs OVH. La table de la BDD ne se remplie pas avec le fichier .txt
Merci je pense avoir été le plus clair possible et qu'il ne manque rien.
Tu as essayé d'éxécuter manuellement le script avec la commande PHP. Tu n'as pas d'erreur particulière ?
ce que je ne comprends pas c'est que le script remplit bien ma base de données si je met l'URL dans le navigateur. mais quand je le lance à partir de cron ma base ne se remplit pas
Salut,
Je pencherais pour un problème de chemin sur ton fichier, quand tu lances ton url ton fichier (qui est à priori dans le même dossier que ton fichier PHP) est bien trouvé, mais lorsque tu lances ton cron, le fichier devrait être indiqué avec son chemin absolu.
Salut florent, bah en fait dans cron OVH on ne peut pas mettre http://www.site.com/dossier/cron.php etc.
Florent, OVH m'a bien dis de mettre www/cron.php dans le lanceur de tache je pense plutot, relis bien, que ca vient de quelque chose dans le script php et pas de CRON pusique les echo s'affichent bien meme en passant par cron, le probleme est la base de données avec les requetes, elle ne se remplit pas
Non le chemin absolu de ton fichier export_test.txt dans ton code, qui doit être sur un OVH mutualisé /home/domaine/www/... comme tu l'as écrit dans ton code en le commentant juste avant. Le chemin absolu complet peut être trouvé avec la fonction php realpath() si besoin .
Sinon en alternative, mais je ne sais pas si le cron OVH d'un mutualisé le permets, plutôt que de mettre www/cron.php dans le lanceur de tâche, tu peux mettre un :
wget http://www.site.com/dossier/cron.php
Ce qui va lancer ta page qui fonctionne, plutôt que d'éxécuter ton code en ligne de commande. (et dans ce cas là inutile de mettre la première ligne)
je viens de mettre le chemin abolu dans le script pour le fichier .txt
$file_to_import="/home/domaine/www/new-janvier-2016/export_test.txt";
, et toujours rien dans la base de données, cela fonctionne bien en tapant l'URL directement sur le navigateur avec ce chemin absolu, mais toujours pas dans CRON meme avec le chemin absolu.
j'ai cette ligne #!/usr/bin/php5 en premier dans le script ne dois je pas la remplacer par #!/usr//local/bin/php5 ??
Merci
Et bien je crois probleme résolu, mais le CRON était un peu en retard de quleques minutes.
je vous tiens au courant. Merci à tous
Merci à tous, ça à l'air ok en chemin absolu sur le fichier .txt
vous pouvez fermer le sujet.