Mon cron-job ne fonctionne plus
Résolu
flexi2202
Messages postés
3822
Date d'inscription
Statut
Membre
Dernière intervention
-
flexi2202 Messages postés 3822 Date d'inscription Statut Membre Dernière intervention - 4 août 2021 à 08:47
flexi2202 Messages postés 3822 Date d'inscription Statut Membre Dernière intervention - 4 août 2021 à 08:47
A voir également:
- Mon cron-job ne fonctionne plus
- Z-cron - Télécharger - Optimisation
- Easy job - Télécharger - Emploi & CV
- Visual cron - Télécharger - Divers Utilitaires
- Cron toutes les minutes ✓ - Forum Linux / Unix
- Cron toutes les heures ✓ - Forum Shell
11 réponses
Bonjour,
Et que t'affiche le bouton "Afficher les résultats" :
https://www.hostinger.fr/tutoriels/wp-content/uploads/sites/9/2017/05/supprimer-cron-hostinger.png
Et comme le dit Pyraah .. si tu ne nous montres pas le code de ta cron ( le script ( php je suppose) que tu essayes d'exécuter).. impossible de t'en dire plus.
( à part, pense à activer l'affichage des erreurs php dans ton code, et places de echo / var_dump .. pour essayer de voir ce que fait (ou non) ton script )
Et que t'affiche le bouton "Afficher les résultats" :
https://www.hostinger.fr/tutoriels/wp-content/uploads/sites/9/2017/05/supprimer-cron-hostinger.png
Et comme le dit Pyraah .. si tu ne nous montres pas le code de ta cron ( le script ( php je suppose) que tu essayes d'exécuter).. impossible de t'en dire plus.
( à part, pense à activer l'affichage des erreurs php dans ton code, et places de echo / var_dump .. pour essayer de voir ce que fait (ou non) ton script )
C'est ta cron que j'ai demandé à voir, pas le code PHP :).
Edit : je laisse Jordane et Pitet prendre le relais, n'étant pas certain de pouvoir répondre ce soir :).
Edit : je laisse Jordane et Pitet prendre le relais, n'étant pas certain de pouvoir répondre ce soir :).
bonjour merci pour l aide
le voici
le voici
<?php /** * Sauvegarde MySQL * * @package BackupMySQL * @author Benoit Asselin <contact@ab-d.fr> * @version backup.php, 2013/01/13 * @link http://www.ab-d.fr/ * */ error_reporting(E_ALL); ini_set('display_errors', true); /** * Sauvegarde MySQL */ class BackupMySQL extends mysqli { /** * Dossier des fichiers de sauvegardes * @var string */ protected $dossier; /** * Nom du fichier * @var string */ protected $nom_fichier; /** * Ressource du fichier GZip * @var ressource */ protected $gz_fichier; /** * Constructeur * @param array $options */ public function __construct($options = array()) { $default = array( 'host' => ini_get('mysqli.default_host'), 'username' => ini_get('mysqli.default_user'), 'passwd' => ini_get('mysqli.default_pw'), 'dbname' => '', 'port' => ini_get('mysqli.default_port'), 'socket' => ini_get('mysqli.default_socket'), // autres options 'dossier' => 'phil/backup/', 'nbr_fichiers' => 5, 'nom_fichier' => 'backup' ); $options = array_merge($default, $options); extract($options); // Connexion de la connexion DB @parent::__construct($host, $username, $passwd, $dbname, $port, $socket); if($this->connect_error) { $this->message('Erreur de connexion (' . $this->connect_errno . ') '. $this->connect_error); return; } // Controle du dossier $this->dossier = $dossier; if(!is_dir($this->dossier)) { $this->message('Erreur de dossier "' . htmlspecialchars($this->dossier) . '"'); return; } // Controle du fichier $this->nom_fichier = $nom_fichier . date('Ymd-His') . '.sql.gz'; $this->gz_fichier = @gzopen($this->dossier . $this->nom_fichier, 'w'); if(!$this->gz_fichier) { $this->message('Erreur de fichier "' . htmlspecialchars($this->nom_fichier) . '"'); return; } // Demarrage du traitement $this->sauvegarder(); $this->purger_fichiers($nbr_fichiers); } /** * Message d'information ( commenter le "echo" pour rendre le script invisible ) * @param string $message HTML */ protected function message($message = ' ') { echo '<p style="padding:0; margin:1px 10px; font-family:sans-serif;">'. $message .'</p>'; file_put_contents( __DIR__ . 'log_'.date("Y-m-d").'.log', date("Y-m-d H:i:s") . ' - ' . $message . PHP_EOL, FILE_APPEND); } /** * Protection des quot SQL * @param string $string * @return string */ protected function insert_clean($string) { // Ne pas changer l'ordre du tableau !!! $s1 = array( "\\" , "'" , "\r", "\n", ); $s2 = array( "\\\\" , "''" , '\r', '\n', ); return str_replace($s1, $s2, $string); } /** * Sauvegarder les tables */ protected function sauvegarder(){ $this->message('Sauvegarde...'); $sql = '--' ."\n"; $sql .= '-- '. $this->nom_fichier ."\n"; gzwrite($this->gz_fichier, $sql); // Liste les tables $result_tables = $this->query('SHOW TABLE STATUS'); if($result_tables && $result_tables->num_rows) { while($obj_table = $result_tables->fetch_object()) { $this->message('- ' . htmlspecialchars($obj_table->{'Name'})); // DROP ... $sql = "\n\n"; $sql .= 'DROP TABLE IF EXISTS `'. $obj_table->{'Name'} .'`' .";\n"; // CREATE ... $result_create = $this->query('SHOW CREATE TABLE `'. $obj_table->{'Name'} .'`'); if($result_create && $result_create->num_rows) { $obj_create = $result_create->fetch_object(); $sql .= $obj_create->{'Create Table'} .";\n"; $result_create->free_result(); } // INSERT ... $result_insert = $this->query('SELECT * FROM `'. $obj_table->{'Name'} .'`'); if($result_insert && $result_insert->num_rows) { $sql .= "\n"; while($obj_insert = $result_insert->fetch_object()) { $virgule = false; $sql .= 'INSERT INTO `'. $obj_table->{'Name'} .'` VALUES ('; foreach($obj_insert as $val) { $sql .= ($virgule ? ',' : ''); if(is_null($val)) { $sql .= 'NULL'; } else { $sql .= '\''. $this->insert_clean($val) . '\''; } $virgule = true; } // for $sql .= ')' .";\n"; } // while $result_insert->free_result(); } gzwrite($this->gz_fichier, $sql); } // while $result_tables->free_result(); } gzclose($this->gz_fichier); $this->message('<strong style="color:green;">' . htmlspecialchars($this->nom_fichier) . '</strong>'); $this->message('Sauvegarde terminée !'); } /** * Purger les anciens fichiers * @param int $nbr_fichiers_max Nombre maximum de sauvegardes */ protected function purger_fichiers($nbr_fichiers_max) { $this->message(); $this->message('Purge des anciens fichiers...'); $fichiers = array(); // On recupere le nom des fichiers gz if($dossier = dir($this->dossier)) { while(false !== ($fichier = $dossier->read())) { if($fichier != '.' && $fichier != '..') { if(is_dir($this->dossier . $fichier)) { // Ceci est un dossier ( et non un fichier ) continue; } else { // On ne prend que les fichiers se terminant par ".gz" if(preg_match('/\.gz$/i', $fichier)) { $fichiers[] = $fichier; } } } } // while $dossier->close(); } // On supprime les anciens fichiers $nbr_fichiers_total = count($fichiers); if($nbr_fichiers_total >= $nbr_fichiers_max) { // Inverser l'ordre des fichiers gz pour ne pas supprimer les derniers fichiers rsort($fichiers); // Suppression... for($i = $nbr_fichiers_max; $i < $nbr_fichiers_total; $i++) { $this->message('<strong style="color:red;">' . htmlspecialchars($fichiers[$i]) . '</strong>'); unlink($this->dossier . $fichiers[$i]); } } $this->message('Purge terminée !'); } } // Instance de la classe ( a copier autant que necessaire, mais attention au timeout ) // Rq: pour les parametres, reprendre une ou plusieurs cles de $default ( dans la methode __construct() ) new BackupMySQL(array( 'username' => 'u4', 'passwd' => '', 'dbname' => 'u4' )); //new BackupMySQL(array( // 'username' => 'root', // 'passwd' => 'root', // 'dbname' => 'mabase', // 'dossier' => './dossier2/' // )); ?>
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
merci de l aide
voila cela ne fonctionne toujours pas
aucun de la liste ne fonctionne
en fait ils s affichent tous le même résultat
a savoir qu il ne trouve pas le fichier
voila cela ne fonctionne toujours pas
aucun de la liste ne fonctionne
en fait ils s affichent tous le même résultat
a savoir qu il ne trouve pas le fichier
La constante __FILE__ en php contient le chemin du script exécuté.
Tu peux donc par exemple afficher cette constante au début de ton fichier backup.php :
Puis appeler ce fichier dans ton navigateur pour vérifier le chemin.
Pense bien sûr à supprimer ces deux nouvelles lignes pour tester à nouveau la tache cron avec le bon chemin.
Tu peux donc par exemple afficher cette constante au début de ton fichier backup.php :
<?php /** * Sauvegarde MySQL */ error_reporting(E_ALL); ini_set('display_errors', true); echo __FILE__; exit();
Puis appeler ce fichier dans ton navigateur pour vérifier le chemin.
Pense bien sûr à supprimer ces deux nouvelles lignes pour tester à nouveau la tache cron avec le bon chemin.
merci pour le code
je viens d essayer de mettre le chemin que j ai obtenu comme tache de cron
mais cela ne fonctionne toujours pas
/home/u43/domains/pecheperle.be/public_html/backup.php
et le resultaat comme message
est ceci
timeout: failed to run command ‘/home/u435/domains/pecheperle.be/public_html/backup.php’: Permission denied
apparemment il refuse l accès au dossier
je viens d essayer de mettre le chemin que j ai obtenu comme tache de cron
mais cela ne fonctionne toujours pas
/home/u43/domains/pecheperle.be/public_html/backup.php
et le resultaat comme message
est ceci
timeout: failed to run command ‘/home/u435/domains/pecheperle.be/public_html/backup.php’: Permission denied
apparemment il refuse l accès au dossier
Dans la commande de la tâche cron il ne faut pas mettre uniquement le chemin, il faut appeler l'exécutable php (dans le dossier /usr/bin) puis renseigner le chemin php à exécuter.
La syntaxe de ton dernier essai était correct, la seule différence sur le chemin semble être l'absence de majuscule sur le dossier domains. La commande de la tâche cron devrait donc être :
La syntaxe de ton dernier essai était correct, la seule différence sur le chemin semble être l'absence de majuscule sur le dossier domains. La commande de la tâche cron devrait donc être :
/usr/bin/php /home/u43/domains/pecheperle.be/public_html/backup.php
ah je pense que on est sur la bonne voie , merci pour cette modification
voici le nouveau message d erreur
je dois peut être mettre el dossier de récupération dans le même endroit que le fichier backup.php
voila je viens d essayer de mettre le dossier backup a la racine
en changeant bien évidement le chemin dans backup .php
mais toujours ce message
j ai essaye aussi en mettant le chemin complet
/usr/bin/php /home/u43/domains/pecheperle.be/public_html/
pourtant si je lance le backup en manuel cela fonctionne
voici le nouveau message d erreur
<p style="padding:0; margin:1px 10px; font-family:sans-serif;">Erreur de dossier "phil/backup/"</p>
je dois peut être mettre el dossier de récupération dans le même endroit que le fichier backup.php
voila je viens d essayer de mettre le dossier backup a la racine
en changeant bien évidement le chemin dans backup .php
mais toujours ce message
<p style="padding:0; margin:1px 10px; font-family:sans-serif;">Erreur de dossier "backup/"</p>
j ai essaye aussi en mettant le chemin complet
/usr/bin/php /home/u43/domains/pecheperle.be/public_html/
pourtant si je lance le backup en manuel cela fonctionne
En effet le script php est désormais bien exécuté.
Concernant le dossier, est-ce que tu as créé un dossier backup dans le dossier public_html ?
Si oui, essaye de renseigner le chemin absolu vers ce dossier dans l'option dossier :
Concernant le dossier, est-ce que tu as créé un dossier backup dans le dossier public_html ?
Si oui, essaye de renseigner le chemin absolu vers ce dossier dans l'option dossier :
new BackupMySQL(array( 'username' => 'root', 'passwd' => '123456', 'dbname' => 'mabase', 'dossier' => '/home/u43/domains/pecheperle.be/public_html/backup/' ));
bonjour Pitet
merci pour la réponse et la solution
note bien qu hier j avais fait un essai avec le chemin absolu et cela n avait pas fonctionner
a présent tout semble fonctionner a merveille
j attends encore un peu avant d indiquer en résolu
encore mille fois merci
tu m enlèves une fameuse aiguille du pied
merci pour la réponse et la solution
note bien qu hier j avais fait un essai avec le chemin absolu et cela n avait pas fonctionner
a présent tout semble fonctionner a merveille
j attends encore un peu avant d indiquer en résolu
encore mille fois merci
tu m enlèves une fameuse aiguille du pied