Prestashop : Gestion des taches cron

Ce tutoriel est compatible avec les versions de Prestashop suivantes :
1.5 1.6 1.7 1.7.4 1.7.5 1.7.6 1.7.7 1.7.8 8.0 +
Cet article est assez ancien, malgré toute l'attention que j' apporte à mes contenus il est possible que celui-ci ne soit plus d'actualité.
N'hésitez pas à me le signaler si nécessaire via le formulaire de contact.

Contrairement à d’autres plateformes l’exécution et la planification des tâches cron sur prestashop n’a rien d’intuitif pour l’utilisateur de l’administration ou pour le développeur.
C’est assez dommage sachant qu’elles sont indispensables pour faire tourner correctement une boutique et pour raffraichir entre autre les indexes de recherches ou de la navigation à facettes.

Nous allons voir ensemble comment gérer les cron ( ou tâches planifiées ) sur la dernière version 1.7 de Prestashop. ( La logique est la même pour les anciennes versions )

Installation du module cronjobs

Prestashop propose un module gratuit « cronjobs« qui est inclu nativement pour les versions antérieures, mais celui-ci n’est plus trouvable sur la version 1.7
Sa seule limite, et que la granularité des tâches est d’une heure, ce qui est amplement suffisant pour l’essentiel des sites e-commerce basiques.

Pour l’installer il faut récupérer le code sur github : https://github.com/PrestaShop/cronjobs

Une fois le module installé dans sa configuration, il faut choisir le mode « Expert » car le mode basique qui permettait de lancer des crons via un service proposé par Prestashop, n’est plus fonctionnel c’est malheureusement inutile d’essayer de l’utiliser 🙁

Cronjobs prestashop

Le mode expert nous donne l’url à définir dans la crontab de notre serveur ( je reviendrais ultérieurement sur la configuration sur un hébergement OVH mutualisé ) .
Cette url se chargera ensuite d’exécuter l’ensemble des tâches planifiées que nous allons définir.

Ajout d’url basiques

Nous pouvons ensuite ajouter les différentes urls nécessaires au bon fonctionnement de notre boutique

  • mise à jour de la navigation à facettes
  • mise à jour des sitemaps

Via l’interface qui est proposée nativement par le module

Ajouter tâche cron

Ajout des tâches cron d’un module

Jusque la ce module fait aussi bien que l’autre module très utilisé pour les tâches crons  ( http://www.prestatoolbox.fr/modules-gratuits/115-crontab.html)
Mais pour moi le gros avantage du module natif prestashop et qu’il est possible d’ajouter automatiquement des tâches crons via des modules 🙂

Pour faire cela c’est très simple, pour l’exemple nous allons réaliser un module hh_cronuser qui souhaite exécuter une tâche planifiée toutes les heures.

Pour cela il suffit de respecter les pré-requis suivants :

  • le module doit implémenter le hook actionCronJob
  • le module doit définir sa périodicité via une fonction getCronFrequency

Pour l’ensemble du fonctionnement vous pouvez voir les commentaires dans le code complet du module ci-dessous :

class Hh_CronUser extends Module {
 
    public function __construct() {
        $this->author = 'hhennes';
        $this->name = 'hh_cronuser';
        $this->tab = 'administration';
        $this->version = '0.1.0';
        $this->bootstrap = true;
        parent::__construct();
 
        $this->displayName = $this->l('HH Cron User');
        $this->description = $this->l('HH Sample Module with cron possibilities');
        $this->dependencies = array('cronjobs'); // Dépendance à mettre en place si obligatoire
    }
 
    /**
     * Installation du module
     * @return boolean
     */
    public function install() {
        if (!parent::install() || !$this->registerHook('actionCronJob') // Hook à implémenter 
        ) {
            return false;
        }
 
        return true;
    }
 
    /**
     * Hook d'exécution de la crontab
     */
    public function hookActionCronJob() {
 
        //Exemple basique on va créer un fichier de log et insérer un contenu dès que la tache cron est appellée
        $fp = fopen(dirname(__FILE__) . '/cron.log', 'a+');
        fputs($fp, 'CALLED at ' . date('Y-m-d H:i:s'));
        fclose($fp);
 
        //Exemple plus avancé, on souhaite effectuer des taches différentes en fonction de l'heure
        $hour = date('H');
 
        switch ($hour) {
            case 07:
                //Lancement des actions du matin
                break;
 
            case 12:
                //Lancement des actions du midi
                break;
            case 18:
                //Lancement des actions du soir
                break;
            default:
                //Action par défaut
                break;
        }
    }
 
    /**
     * Information sur la fréquence des taches cron du module
     * Granularité maximume à l'heure
     */
    public function getCronFrequency() {
        return array(
            'hour' => -1, // -1 equivalent à * en cron normal
            'day' => -1, 
            'month' => -1,
            'day_of_week' => -1
        );
    }
 
}

Lors de l’installation de notre module celui-ci va automatiquement enregistré sa tâche planifiée à la fréquence souhaitée, comme vous pouvez le voir sur la capture suivante :

Crontab module

Vous remarquez qu’il n’est possible d’enregistrer qu’une seule tâche par module, mais en cas de nécessité de plusieurs tâches à des moments différents vous pouvez toujours lancer le module toutes les heures et gérer la logique et les horaires directement dans le module comme dans mon exemple 🙂

Cas spécifique hébergement mutualisé ovh :

Chez ovh un certain nombre de restriction s’appliquent et il n’est pas possible de saisir la commande données dans le module.

Pour contourner cela nous allons donc créer un fichier « cron.php » que nous allons placer dans la racine du dossier d’administration de prestashop avec le contenu suivant :

 

<?php /** * Lancement des scripts cron * Utilise le module prestashop cronjobs * Permets de planifier les tâches via l'administration * Lancer ce script à minima toutes les heures */ ini_set('display_errors','on'); include dirname(__FILE__) . '/../config/config.inc.php'; $link = new Link(); $shop_url = $link->getBaseLink();
$admin_dir = basename(dirname(__FILE__));
$cron_job_token = Configuration::getGlobalValue('CRONJOBS_EXECUTION_TOKEN');
$cronUrl = $shop_url . $admin_dir . '/index.php?controller=AdminCronJobs&token=' . $cron_job_token;
echo Tools::file_get_contents($cronUrl);

Dans le manager OVH il faudra ensuite appeller l’url admin-dir/cron.php toutes les heures pour que les taches crons s’exécutent 🙂
Pour visualiser les tâches planifiées cliquer sur le bouton « plus + »

Saisissez ensuite l’adresse du cron et sélectionner la version de php de votre hébergement
Penser également a bien cocher la case « Activation » ! 🙂

 

58 réflexions sur “Prestashop : Gestion des taches cron”

  1. Super tuto je trouve, mais j’aurai bien voulu savoir comment modifier le script pour ovh mutu dans le cas ou tu configure un module autre que le cronjob natif (je pense à cron tab en mode webcron) en tous cas merci du travail!

  2. Impossible d installer le module

    Ce fichier ne semble pas être un fichier .zip de module valide.

    Y aurait il une solution ?
    Merci

  3. Bonjour Hervé,
    Merci pour votre blog qui m’est très utile!
    Je cherche un moyen de mettre en place des tâches cron mais quelque chose m’échappe.
    Je ne parviens pas à installer le module que vous proposez (Hh_CronUser).
    Merci d’avance de me dire comment faire.
    Fil 🙂

  4. Merci Hervé tout marche parfaitement.

    J’ai juste une question, concernant la fonction hookActionCronJob(), elle ne doit pas retourné quelquechose ?
    Par exemple true or false, pour que la fonction parente puisse savoir si l’exécution s’est bien déroulée ?

  5. Bonjour, vous écrivez dans votre article « je reviendrais ultérieurement sur la configuration sur un hébergement OVH mutualisé  » et justement j’ai un souci dans ce cas spécifique. Pouvez vous en dire plus ? Par avance merci

  6. Bonjour,
    J’ai configuré par le module plusieurs tâches cron.
    Je me demandais s’il était indispensable de créer le module hh_cronuser afin que celui de Prestashop CronJobs fonctionne ? (je suis sur un mutualisé OVH).

    En mode avancé PS préconise :
    « Pour exécuter vos tâches cron, veuillez insérer la ligne suivante dans votre éditeur de tâches cron : 0 * * * * curl -k etc… »

    Ai-je omis quelque chose ?
    Merci d’avance.

    1. Bonjour,
      Le module hh_cronuser est uniquement un module d’exemple d’utilisation. Il n’est absolument pas nécessaire 😉
      Pour le fonctionnement sur un mutualisé ovh c’est un peu particulier, mais je l’ai documenté en fin d’article, si ce n’est pas assez clair il faudrait sans doute que je mettes des captures du manager.

      Cordialement,

  7. Bonjour, merci pour vos explication. Ma tâche cron sur le manager OVH ne fonctionne pas (elle a été suspendu).
    Dans la commande à éxécuter dois-je mettre le chemin absolu du fichier cron.php ?
    exemple : http://www.monsite.com/admin/cron.php ?
    Car à la base j’avais juste mis : admin/cron.php

    Merci d’avance,
    Cdt

    1. Sur mes différents tests le chemin relatif fonctionnait très bien.
      Attention car il est relatif à la racine de l’hébergement ovh ( il y a souvent un dossier www initial )

  8. Bonjour,
    Ne m’y connaissant pas en codage, j’ai copié votre partie php pour OVH dans mon dossier racine mais quand j’essaie de le lancer manuellement pour vérifier que tout fonctionne, j’ai les erreurs suivantes :
    Warning: include(/***/../config/config.inc.php): failed to open stream: No such file or directory in /****/www/cron.php on line 9

    Warning: include(/****/www/../config/config.inc.php): failed to open stream: No such file or directory in /****/www/cron.php on line 9

    Warning: include(): Failed opening ‘/****/www/../config/config.inc.php’ for inclusion (include_path=’.:/usr/local/php5.6/lib/php’) in /****/www/cron.php on line 9

    Fatal error: Class ‘Link’ not found in /****/www/cron.php on line 10

    Faut il ajouter l’adresse donnée par le module CronJobs quelque part dans votre code?
    Faut il protéger ce fichier et si oui comment?
    Merci beaucoup pour votre aide et pour cet article!

    1. Bonjour Arnaud,
      Vous n’avez pas suivi ce que j’ai expliqué dans mon article et c’est la cause de l’erreur.
      Comme précisé il faut déposer ce fichier dans le dossier d’administration de votre site et non pas à la racine.
      Le fichier de configuration n’est pas trouvé en raison de cela.

      Cordialement,
      Hervé

  9. Bonjour Hervé,
    J’ai changé et le dossier et tout marche parfaitement merci beaucoup.
    N’y connaissant pas grand chose, je pensais que le dossier racine et admin étaient le même… :S
    Bonne journée.
    Cordialement

  10. Bonjour,

    Concernant le chapitre « Cas spécifique hébergement mutualisé ovh » Nous avons renommer notre dossier Admin (admin-xxxx) que devons nous nous modifier dans le script ? ou et quel texte exactement (nous sommes novices)

    1°/- Pour la tache cron OVH dans « Commande à exécuter ./ » pouvez-vous nous confirmer le chemin à renseigner est bien alors : www/admin-xxxx/cron.php

    2°/- Nous sommes en PS 1.5.6.3 quel language PHP devons nous sélectionner pour la tache cron OVH en sachant que l’hébergement tourne en PHP Global 5.6 ?

    3°/- En PS 1.5.6.3 avons des autres précautions à prendre pour cette mise en place ?

    Nous ne vous connaissions nous venons découvrir votre blog, nous le gardons dans nos favoris.

    Un GRAND merci par avance pour votre aide

    Nathalie

    1. Bonjour Nathalie,
      Voici mes différents retours :
      1) C’est bien cela
      2) Même version de php que l’hébergement donc php5.6
      3) Non aucune autre restriction supplémentaire à mettre en place 😉

      Merci de l’information c’est toujours plaisant de savoir que mes articles peuvent aider 🙂

      Cordialement,
      Hervé

  11. Bonjour Hervé,

    Merci de votre aide et retour rapide. C’est également plaisant de croisé des Personnes serviables 🙂

    Mais il y avait une question en préambule du point 1°/ qui est restée sans réponse concernant les script par lui même du « Cas spécifique hébergement mutualisé ovh »

    « Nous avons renommer notre dossier Admin (admin-xxxx) que devons nous nous modifier dans le script ? ou et quel texte exactement ? (nous sommes novices) »

    Encore un GRAND merci pour votre aide.

    Bien cordialement,
    Nathalie

    1. Bonjour Nathalie,
      Il n’y a rien a modifier dans le script.
      Seul le chemin d’appel dans le manager ovh est dépendant du chemin de votre administration et vous l’avez très bien identifié dans votre point n°1 😉

      Cordialement,
      Hervé

  12. Bonjour Hervé.

    Ok merci, on va mettre en place.

    Juste info + concernant le module natif cronjobs v1.4.0

    Pour notre part,nous avons deux sites, un en PS 1.5.6.3 ou il ne fonctionne plus depuis quelques jours (d’ou nos échanges) et un second en PS 1.6.1.23 ou il fonctionne toujours correctement.

    Le deux sont hébergés chez OVH en mutualisé et en PHP global 5.6.

    Encore merci.

    Bien cordialement,
    Nathalie

  13. Bonjour Hervé,

    Pour notre part ça ne fonctionne pas ! Voici le message d’OVH que nous avons reçu ce matin :

    Suite à 10 erreurs d’exécution consécutives, une tâche planifiée (CRON) a été désactivé :
    Commande exécutée : www/admin-xxxx/cron.php

    Ces erreurs d’exécution sont généralement causées par une anomalie dans le code ou un temps d’exécution trop long.

    N’hésitez pas à modifier votre tâche planifiée directement dans votre Espace Client.

    …/…

    Merci à vous quand même.

    Bien cordialement,
    Nathalie

    1. Bonjour,

      Essayez de regarder dans les logs cron ou d’erreur de votre hébergement il doit y’avoir un message d’erreur et c’est pour cela qu’ovh suspends la tache cron.

  14. Bonjour Hervé,

    Voici un copier/coller des Logs cron (les fichiers « aaaaaaaaaa » et « admin-xxxxx » sont modifiés ici):

    [2019-01-25 17:17:03] ## OVH ## START – 2019-01-25 17:17:03.049719 executing: /usr/local/php5.6/bin/php /homez.741/aaaaaaaaaa/www/admin-xxxxx/cron.php
    [2019-01-25 17:17:03]
    [2019-01-25 17:17:03] ## OVH ## END – 2019-01-25 16:17:03.214537 exitcode: 255
    [2019-01-25 18:17:02] ## OVH ## START – 2019-01-25 18:17:02.790109 executing: /usr/local/php5.6/bin/php /homez.741/aaaaaaaaaa/www/admin-xxxxx/cron.php
    [2019-01-25 18:17:02]
    [2019-01-25 18:17:02] ## OVH ## END – 2019-01-25 17:17:02.907228 exitcode: 255
    [2019-01-25 19:17:02] ## OVH ## START – 2019-01-25 19:17:02.507276 executing: /usr/local/php5.6/bin/php /homez.741/aaaaaaaaaa/www/admin-xxxxx/cron.php
    [2019-01-25 19:17:02]
    [2019-01-25 19:17:02] ## OVH ## END – 2019-01-25 18:17:02.590611 exitcode: 255
    [2019-01-25 20:17:02] ## OVH ## START – 2019-01-25 20:17:02.634501 executing: /usr/local/php5.6/bin/php /homez.741/aaaaaaaaaa/www/admin-xxxxx/cron.php
    [2019-01-25 20:17:02]
    [2019-01-25 20:17:02] ## OVH ## END – 2019-01-25 19:17:02.738333 exitcode: 255
    [2019-01-25 21:17:02] ## OVH ## START – 2019-01-25 21:17:02.546569 executing: /usr/local/php5.6/bin/php /homez.741/aaaaaaaaaa/www/admin-xxxxx/cron.php
    [2019-01-25 21:17:02]
    [2019-01-25 21:17:02] ## OVH ## END – 2019-01-25 20:17:02.678904 exitcode: 255
    [2019-01-25 22:17:02] ## OVH ## START – 2019-01-25 22:17:02.998190 executing: /usr/local/php5.6/bin/php /homez.741/aaaaaaaaaa/www/admin-xxxxx/cron.php
    [2019-01-25 22:17:02]
    [2019-01-25 22:17:02] ## OVH ## END – 2019-01-25 21:17:03.090237 exitcode: 255
    [2019-01-25 23:17:02] ## OVH ## START – 2019-01-25 23:17:02.664201 executing: /usr/local/php5.6/bin/php /homez.741/aaaaaaaaaa/www/admin-xxxxx/cron.php
    [2019-01-25 23:17:02]
    [2019-01-25 23:17:02] ## OVH ## END – 2019-01-25 22:17:02.756254 exitcode: 255
    [2019-01-26 00:17:02] ## OVH ## START – 2019-01-26 00:17:02.995320 executing: /usr/local/php5.6/bin/php /homez.741/aaaaaaaaaa/www/admin-xxxxx/cron.php
    [2019-01-26 00:17:02]
    [2019-01-26 00:17:02] ## OVH ## END – 2019-01-25 23:17:03.102377 exitcode: 255
    [2019-01-26 01:17:02] ## OVH ## START – 2019-01-26 01:17:02.763010 executing: /usr/local/php5.6/bin/php /homez.741/aaaaaaaaaa/www/admin-xxxxx/cron.php
    [2019-01-26 01:17:02]
    [2019-01-26 01:17:02] ## OVH ## END – 2019-01-26 00:17:02.960401 exitcode: 255

    En sachant que :

    1°/- La tache cron sur OVH est bien réglée sur : « Toutes les heures » ; « Tous les jours » ; « Tous les jours de la semaine » ; « Tous les mois »

    2°/- le module cronjobs PrestaShop est bien en mode avancé.

    3°/ – les 3 principales taches cron sur le modulecronjobs PrestaShop sont programmées une seule fois chaque jour et à des heures différentes soit : 11, 19 et 02 heures et les 3 sur « Tous les jours » ; « Tous les mois » ; « Tous les jours de la semaine »

    Encore un grand MERCI pour votre aide.

    Bien cordialement,
    Nathalie

    1. Votre tâche cron renvoie un code erreur 255
      [2019-01-25 17:17:03] ## OVH ## END – 2019-01-25 16:17:03.214537 exitcode: 255

      Si tout fonctionne celui-ci devrait renvoyer un code 0 comme sur la ligne suivante :

      [2019-01-01 02:43:01] ## OVH ## START – 2019-01-01 02:43:01.614987 executing: /usr/local/php5.6/bin/php /*/stock.php
      [2019-01-01 02:43:01] Pas de fichier stock à traiter
      [2019-01-01 02:43:01] ## OVH ## END – 2019-01-01 01:43:01.768044 exitcode: 0

      Essayez de vous connecter en ssh et de lancer la commande pour voir si vous avez une erreur.
      Ou sinon regardez également dans les logs d’erreurs php si un message colle avec l’heure d’éxécution du cron.

  15. Bonjour,
    J’ai mis en place votre solution et j’ai l’impression qu’il ne se passe rien.

    1)Quand vous parlez du module cron job natif vous parlez bien du module « Éditeur de tâches cron v1.4.0 – by PrestaShop »

    2) Si les taches cron fonctionnent bien est ce que la colonne « Dernière exécution » va se mettre à jour normalement ?
    pour l’instant, si j’exécute /admin8xx3/cron.php j’ai une page blanche et les dates ne se sont pas mise à jour dans le module.

    3) Enfin je n’ai pas compris où il fallait mettre: 0 * * * * curl -k « https://www.ahcheval.fr/admin8xx3/index.php?controller=AdminCronJobs&token=3xxx »

    Nous sommes sur un ovh mutualisé. php 5.6
    Merci pour votre post très intéressant.

  16. Bonjour,
    je vous remercie pour vos réponses;
    3) j’ai lu la doc ovh 10 fois sur le sujet et j’en ai les yeux qui se croisent mais je ne vois toujours pas où mettre cette ligne dans mon hébergement ovh; créer un tache cron avec ce genre de caractères n’est pas possible en ovh mutualisé, donc où exactement faut-il mettre cette ligne 0 * * * * curl -k « https://www.ahcheval.fr/admin8xx3/index.php?controller=AdminCronJobs&token=3xxx ?? si vous pouviez préciser un peu ce serait super.
    Bien cordialement, Solene

  17. Bonjour Hervé,
    Merci pour votre sujet très intéressant !
    Simplement je rencontre un soucis que je n’arrive pas à résoudre depuis quelques jours…je suis un peu une novice en la matière.
    J’ai installé un module qui me demande d’installer sur mon serveur les tâches CRON suivantes (je suis chez OVH mutualisé) :

    * * * * * /usr/bin/flock -n /tmp/mmo_process_import.lockfile /usr/bin/curl https://mon-site.com/modules/ps_mmoconnector/processImportCron.php >> /home/destockoby/www/modules/ps_mmoconnector/logs/process_import_cron.log
    7 */1 * * * /usr/bin/flock -n /tmp/mmo_cache_clean.lockfile /home/destockoby/www/modules/ps_mmoconnector/cache_clean >> /home/destockoby/www/modules/ps_mmoconnector/logs/cache_clean.log
    15 0 * * * /usr/bin/flock -n /tmp/mmo_update_product.lockfile /usr/bin/curl https://mon-site.com/modules/ps_mmoconnector/updateProductURLsCron.php >> /home/destockoby/www/modules/ps_mmoconnector/logs/update_product_urls_cron.log

    J’ai suivi vos étapes à savoir de créer un fichier.php à mettre à la racine de l’admin mais cela ne fonctionne toujours pas dois-je y inclure les tâches suivantes demandées par mon module ou simplement le script que vous avez fourni ?

    Merci beaucoup d’avance de votre aide !

    Bien cordialement,

    Marie

    1. Bonjour Marie,

      Vous avez plusieurs possibilités :
      Le plus simple de votre cas serait de faire l’installation standard telle que décrit dans l’article.
      Vous pouvez ensuite dans la liste des tâches planifiées ajouter les lien : https://mon-site.com/modules/ps_mmoconnector/processImportCron.php et https://mon-site.com/modules/ps_mmoconnector/updateProductURLsCron.php avec la fréquence souhaitée.
      ( Dans votre exemple le script * * * * * souhaite tourner toutes les minutes, ce ne sera pas possible via le module et limité à une fois par heure )
      La gestion des locks et les fichiers de logs pas gérés non plus.

      Sinon vous pouvez également créer les tâches planifiées directement vers ces fichiers directement dans le manager ovh ( via le chemin absolu du fichier )
      Cordialement,
      Hervé

  18. Bonjour Hervé,

    Je souhaiterais appeler chaque heure dans ma tâche CRON un lien mettant à jour mes commandes entre différentes marketplaces.
    Je suppose que je dois appeler mon lien dans la fonction hookActionCronJob, mais je ne connais pas la syntaxe à utiliser pour appeler un lien (https://mondomaine/modules/monmodules/fichier.php)
    Pourriez-vous m’indiquer la syntaxe général pour ce cas ?

    Merci pour tous vos tutoriels !!!

    1. Bonjour Ronan,
      Désolé du délai de réponse.
      Vous pouvez ajouter le lien absolu vers la page de votre module dans le hook en utilisant la classe link si c’est un controlleur front de votre module
      $moduleLink = $this->context->link->getModuleLink('monmodules','moncontroller');
      Ou si ce n’est pas le cas via le lien de base de prestashop :
      $moduleLink = $this->getBaseLink().'modules/monmodules/fichier.php';
      Cordialement,
      Hervé

  19. bonjour, alors j’ ai suivit votre tuto est tous d’ abord Merci c ‘est le seule qui aide vraiment pour cette problématique en tous cas qui est clair pour moi. Mon problème est que dans les log cron la tache semble avoir été exécuter sans problème ( si je ne me trompe pas ) .Je suis sur ovh mutalisés . Ci dessous le message :
    ## OVH ## START – 2020-04-26 12:44:02.222152 executing: /usr/local/php5.6/bin/php /homez.423/****/www/ADMIN/cron.php
    [2020-04-26 10:44:02]
    [2020-04-26 10:44:02] ## OVH ## END – 2020-04-26 12:44:03.353206 exitcode: 0

    MAIS dans le log erreur , j’ ai ce message et constate que sur le module la tache cron ne c’est pas executer. C’est un module pour les emails de relance clients.
    [warn] [client 127.0.0.1] [host nappybouo.cluster015.ovh.net] (22)Invalid argument: Cannot fix environment variables for container, continue anyway.

    Auriez vous une solution a ce problème s’ il vous plait ? ou peux etre que j ‘ai mal fait une étape.

    1. Bonjour,

      Les infos qui remontent dans vos logs me semblent corrects.
      Le message qui remonte est uniquement un warning qui ne devrait pas avoir d’incidence.
      L’article date un peu il faut que je vérifie si cela fonctionne toujours car je gère assez peu de sites en mutualisé.

      Cordialement,
      Hervé

  20. Bonjour, je vous joins ci dessous le scrips du fichier Cron. Peux etre que ca vous aidera à comprendre mon problème.
    getBaseLink();
    $ADMIN = basename(dirname(__FILE__));
    $cron_job_token = Configuration::getGlobalValue(‘CRONJOBS_EXECUTION_TOKEN’);
    $cronUrl = $shop_url . $ADMIN . ‘/index.php?controller=AdminCronJobs&token=’ . $cron_job_token;
    echo Tools::file_get_contents($cronUrl);

    Cordialement,

  21. Bonjour,

    mon cas est un « cas spécifique hébergement mutualisé ovh ».

    Je n’ai pas réussit à installer cronjobs, mais j’ai crontab par Samdha.

    Dans mon cas quel texte dois-je mettre alors dans mon fichier cron.php?

    Merci par avance de votre aide.

    Bien à vous.

    1. Bonjour,
      Je ne connais malheureusement pas assez le module de Samdha pour vous dire si une modification est nécessaire sur un hébergement ovh.
      Il faudrait voir directement avec lui.

      Cordialement,
      Hervé

  22. Bonjour,
    Comme j’ai vu dans un autre commentaire j’ai le message :

    « Impossible d installer le module

    Ce fichier ne semble pas être un fichier .zip de module valide. »

    J’ai tenter de faire ce que vous avez dit mais je ne comprends pas très bien. J’ai copier le fichier zip sur le serveur, et j’ai également essayé d’extraire le fichier avant de le copier. Dans les 2 cas je ne comprends pas quelle est la suite. Le module n’apparait pas dans ma liste et je ne vois pas comment l’installer d’une façon différente.

    Qu’est ce que j’ai raté ?

    Merci

    1. Bonjour Florian,

      Pour installer le module lorsque vous récupérer le .zip il faut l’extraire sur votre ordinateur.
      Assurez vous que le nom du dossier est bien « cronjobs » ( et pas cronjobs-master par exemple )
      Envoyez ensuite ce dossier dans le dossier modules de votre site via ftp.
      Le module devrait ensuite être trouvé dans la liste.

      Cordialement,
      Hervé

  23. Bonjour Hervé,

    Merci pour le tuto, pour mon cas j’ai installé le module natif prestashop sur la version 1.6
    Éditeur de tâches cron v1.4.0

    J’ai bien paramétré mes taches, par contre je voudrais savoir si j’étais obligé d’ajouter le fichier cron.php et de réaliser la manip sur ovh ?

    Car le module éditeur de taches m’affiche le message suivant:

    « Le mode avancé vous permet d’utiliser votre propre éditeur de tâche cron au lieu du webservice PrestaShop. Avant tout, vérifiez que la bibliothèque « curl » est bien installée sur votre serveur.
    Pour exécuter vos tâches cron, veuillez insérer la ligne suivante dans votre éditeur de tâches cron : (url modifiée)

    0 * * * * curl -k « https://www.monsite/admin…../index.php?controller=AdminCronJobs&token=0dd30b7ccd99398968c975f78cb76377″  »

    J’aurais également souhaité savoir ou insérer cette url fournie par le module ?

    merci d’avance pour votre aide

    1. Bonjour Yann,

      Concernant la manipulation chez ovh, tout dépends de votre hébergement 🙂
      Elle s’applique uniquement si vous êtes hébergé chez ovh en mutualisé.
      Sur les autres hébergeurs en mutualisé je ne saurais malheureusement pas vous dire comme les configurer en revanche.

      Dans le cas ou vous avez un serveur dédié / vps il vous suffit d’ajouter la ligne donnée par le module dans la crontab du serveur.

      Cordialement,
      Hervé

  24. Bonjour Hervé,

    Je suis en offre pro2014 (je pense que c’est du mutualisé).

    Ducoup j’ai crée le fichier cron.php et mis à la racine admin5….

    Ma question (rejoint plusieurs questions déja vues en commentaires): l’url fournie par le module :

    « 0 * * * * curl -k « https://www.monsite/admin…../index.php?controller=AdminCronJobs&token=0dd30b7ccd99398968c975f78cb76377″ »

    n’est pas obligatoire à ajouter sur du mutualisé ?
    merci

    1. Bonjour Yann,

      La copie de cette ligne dans le manager ovh n’est pas possible.
      C’est pour cela que je donne un contournement en créant une page spécifique qui fait cet appel 🙂

      Cordialement,
      Hervé

  25. entendu, ce point n’était pas très clair.

    Donc si on résume pour du mutualisé:
    1: télécharger le module cron prestashop
    2: paramétrer les taches sur le module
    3: créer le fichier cron.php à la racine admin
    4: paramétrer une tache cron sur ovh en appelant le fichier cron.php

    Pas d’autres manip à faire

    Merci à vous et surtout pour la rapidité de réponse !

    1. Oui c’est tout à fait ça.
      Concernant la bonne exécution il suffit de regarder la date de dernière exécution des tâches dans le module.
      Si c’est à jour c’est que ça tourne bien.

      Cordialement,

  26. Lorsque je fait appel au fichier http://www.mondomaine/cron.php j’ai une 404 qui s’affiche je suppose donc que je n’ai pas fait la bonne manip… pouvez vous me venir en aide svp ?
    ce n’est pas le cas: dernière exécution « jamais »
    doit-on modifier la fin de l’url dans le fichier cron que vous fournissez
    /index.php?controller=AdminCronJobs&token=(0dd30b7ccd99398968c975f78cb76377)

    1. Bonjour Yann,

      Vous n’avez effectivement pas bien lu l’article.
      Je pense que vous avez fait la même erreur que dans ce commentaire :https://www.h-hennes.fr/blog/2017/12/01/prestashop-gestion-des-taches-cron/#comment-21491
      Il faut bien placer le fichier dans votre dossier d’administration et pas à la racine de votre site.
      Après l’article date pas mal ( + de 3 ans ) et je ne l’ai pas retesté récemment.
      En fonction des hébergements cela pose peut être des problèmes.

      Cordialement,
      Hervé

  27. J’ai pourtant bien mis le fichier cron comme suit:

    www/mondossier/admin5xxxx/cron.php

    et sur ovh: www/mondossier/admin5xxxx/cron.php

    Le fichier cron doit il etre modifié ou mis tel que ?

    merci pour votre aide

  28. Bonjour,

    Malgré mes tentatives rien ne fonctionne. J’ai trouvé une solution de secours si ça peu aider certaines personnes.
    Il s’agit d’un service d’execution d’url en ligne https://www.easycron.com/

    très intéressant, surtout pour des exécutions journalières: 60000 exécutions gratuites

    1. Bonjour Yann,
      Super merci pour le retour pour tous ceux qui pourraient être bloqués comme vous ! 🙂
      Concernant votre hébergement je ne saurais malheureusement pas vous dire ce qui a bloqué :/

      Cordialement,
      Hervé

  29. Bonjour j’ai suivis vos indications j’ai réussis a le faire fonctionné mais 2h après tout a foirer … j’ai oublier de cocher la case avancé, je suis rester en basique. Je n’ai plus accès a l’onglet Module il me met error 500 comment corriger cela ? Merci 🙂

    1. Bonjour,

      Activer le mode debug vous permettra déjà de voir le message d’erreur.
      Ceci devrait vous donner une piste, en l’état je ne saurais pas vous en donner la cause.

      Cordialement,
      Hervé

Répondre à Arnaud Annuler la réponse

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *