OVH Community, votre nouvel espace communautaire.

Tâches planifiées - Cron : ce qu'il [ne] faut [pas] faire


psny
11/06/2016, 09h55
Merci !

Daniel60
10/06/2016, 18h02
C'est déjà un chemin absolu.

psny
10/06/2016, 17h05
Bonjour,

J'ai un problème qui est peut-être aussi un problème de chemin absolu.

Le logiciel de backup MySqlDumper effectue une sauvegarde de la base de donnée puis envoie un mail, le tout piloté par cron.
Depuis quelques semaines les mails ne sont plus envoyés (la sauvegarde est ok, donc la tache est bien démarrée par cron).

Dans les paramètres du programme de backup, il est question de sendmail et se son accès par "/usr/sbin/sendmail -t -i"

Que devient ce chemin d'accès en chemin absolu ?

Merci d'avance

Jikoo
17/05/2016, 19h35
Très bien elmanu. Merci pour ce complément d'information.

elmanu
13/04/2016, 22h07
Salut !

Pour que cet excellent tuto soit complet et comme j'ai galéré ma race pour arriver à mes fins sans rien trouver sur le net, je me permets d'ajouter une méthode qui fonctionne pour lancer un fichier php AVEC PARAMÈTRES, ce que n'autorise pas le cron OVH
par exemple :
Code PHP:
cron.php?token=12gh67tf56&param2=FEGT354 
-créer un fichier shell script (par exemple cron.sh) qui ressemble à ça :
Code:
#!/bin/sh
cd /chemin_absolu_vers_le_fichier_php/ && /usr/local/php7.0/bin/php -f cron.php param1=valeur1 param2=valeur2
-rendre ce fichier executable (755)
-appeler ce fichier avec l'interface cron d'OVH classique

Le chemin absolu vers le fichier php à lancer ressemble à ça : /homez.123/domaine/www/blabla/
Bien entendu, si votre site tourne sous une autre version de php, il faut changer le php7.0 en php5.6 (par exemple)

Pour finir, on peu lancer plusieurs fois le même fichier avec des paramètres différents, ou un fichier différent, il suffit de mettre plusieurs lignes. On peut se permettre de temporiser entre chaque action avec une ligne
Code:
sleep 5
(5 secondes de pause) mais c'est pas forcément nécessaire.

Et c'est tout !

A vous les studios

padpad
31/01/2016, 20h57
merci !

Jikoo
30/01/2016, 21h21
Tout à fait, ça fait un moment que j'en parle (cf. https://forum.ovh.com/showthread.php...l=1#post620507)
Très bonnnes recommendations. Merci. Très utile.

Gaston_Phone
30/01/2016, 20h23
Très bien expliqué. Merci.

ppan
29/01/2016, 21h24
Bonjour,

Comme je viens de connaître les affres des tâches planifiées (TP) qui ne tournaient plus sur mes hébergements mutualisés, comme Google ne m'a pas été d'une grande aide, trouvant des réponses généralement inexactes ou approximatives (ici même), je me permets de jeter ici un petit caillou pour celle ou celui qui en aurait besoin.

Je signale à OVH ici présent que la page dédiée est erronée : tester une tâche via un navigateur (donc via HTTP) n'a aucun intérêt ici, nous allons le voir...

Tout d'abord, je souhaite mettre fin à deux mythes urbains :
1. inutile de modifier le CHMOD des différents fichiers utilisés par la TP ; celui par défaut (604) est parfait
2. aucune instruction type "#!/usr/local/bin/php" en tête de fichier PHP n'est nécessaire : c'est géré lors de la config d'une TP

Voici les deux points cruciaux pour la bonne marche d'une TP :
1. il faut que tous les chemins des fichiers inclus (ou lus) soient des chemins absolus
2. il faut mettre à jour votre version PHP via le manager ; j'ai passé tous mes sites en PHP 5.6 et ça roule

Concernant le point 1, il faut comprendre que depuis quelques temps OVH a choisi de faire tourner les TP en PHP CLI, c'est à dire en mode programme (en non via HTTP comme d'antan). Donc le chemin ne peut plus être relatif. Par exemple include('fichier.php') ne mène nulle part. Donc soit vous écrivez votre racine "en dur" :
Code:
votre_dossier/www/fichier.php');
?>
Soit - bien mieux - vous en faites l'extraction on-the-fly via ce type d'instruction :
Code:
La fonction de conversion des anti-slashes est intéressante pour tester vos CRON sous Windows, via la fenêtre de commande DOS. Si ça passe sous Windows ça passera chez OVH.
Au passage, ça vous permet également de faire tourner une tâche planifiée sur un serveur Windows doté d'un Apache. Via le planificateur (Windows) il faut appeler le programme php.exe qui va bien (cliquer sur Parcourir) et ajouter en argument le chemin absolu vers le script à exécuter. En mode admin (ou user avec droits ad hoc).

Attention ! On est en mode CLI donc aucune requête HTTP n'est interprétée : si le tableau $_SERVER est lisible, toutes les informations n'y sont pas contenues (ex. HTTP_USER_AGENT ou HTTPS). De même que $_GET et $_POST seront muets ; on ne peut pas passer de paramètres en URL (Query String) dans ce mode.

Pour le point 2, je me suis bêtement rendu compte que certains de mes [vieux] sites étaient encore en PHP 4 ! Et là, inutile de vouloir faire tourner une TP (même avec le choix "Autre" langage (je ne sais pas à quoi il sert)). Il faut donc aller dans le Manager, cliquer sur Hébergements puis sur le domaine concerné et vérifier la ligne Version PHP globale. Modifier la configuration pour passer en PHP 5.x (à l'heure où j'écris ces lignes) après avoir vérifié en local, bien sûr, que votre site passe dans la version choisie. Puis via le menu "Plus +" aller [re]configurer vos TP.
Le script va ensuite chercher la version PHP choisie de lui-même, comme un grand. C'est vérifiable dans vos logs : http://logs.ovh.net/votre_domaine/ puis cliquez sur "cron" en bas à droite de vos stats. Toute tâche accomplie doit donner à peu près ceci :

[2016-01-28 03:11:02] ## OVH ## START - 2016-01-28 03:11:02.331408 executing: /usr/local/php5.6/bin/php /homez.647/votre_dossier/www/fichier.php
[2016-01-28 03:11:02] ## OVH ## END - 2016-01-28 03:11:02.602332 exitcode: 0


Notez le code 0 en face de exitcode qui signifie aucune erreur. Notez qu'il n'y a aucun code HTML ici car mes scripts sont configurés pour n'afficher un résultat que via HTTP. Sinon toute sortie sera affichée entre les lignes START et END.

Cela m'a pris du temps pour corriger mon CMS perso ; du coup j'ai rafraîchis quelques fonctions, notamment MySQL (mysqli_ au lieu de mysql_ qui est obsolète).

Hope it helps.
Si j'ai oublié quelque(s) chose(s) ne vous gênez pas pour me l'indiquer, ou commenter.