Libérez-vous des tâches répétitives : automatisez vos imports !

Automatisation de votre fichier d’import

Une tâche CRON est un programme disponible sur les systèmes de type Unix (Linux, Mac OS ...) permettant de planifier des tâches répétitives à intervalles réguliers.

Il est en effet intéressant que les tâches courantes et répétitives soient effectuées automatiquement par le système plutôt que d'avoir à les lancer manuellement en tant qu'utilisateur.

Voici comment vous simplifier la vie en automatisant vos imports CSV avec une tâche CRON, qui vous permettra de créer et/ou modifier vos produits automatiquement. 

  1. Paramétrez votre import une première fois pour vérifiez que l'import fonctionne avec la configuration utilisée. Une configuration classique serait d'identifier les produits par référence produit et de remplacer les propriétés des produits.

  2. Téléchargez le fichier joint à cet article

  3. Décompressez-le et renommez-le cron_import_YYY.php (choisissez un nom pratique)

  4. Éditez ce fichier pour le paramétrer

Les premières lignes permettent de modifier la configuration :

// Nom de la tâche Cron
if (!isset($_GET['name'])) {
    $_GET['name'] = 'My task 1';
}

// Nom du fichier CSV, toutes les options doivent être définies et testées dans Store Commander
if (!isset($_GET['filename'])) {
    $_GET['filename'] = 'impDecli.csv';
}

// Avez-vous besoin de supprimer le fichier de travail (TODO.csv) ?
if (!isset($_GET['deletetodofile'])) {
    $_GET['deletetodofile'] = 0;
}

// Faut-il forcer le mapping ? Facultatif. Si vous le souhaitez, entrez le nom du mapping ci-dessous.
if (!isset($_GET['forcemapping'])) {
    $_GET['forcemapping'] = '';
}

// Ne mettre à jour que les anciens produits ? Cette option permet d'ignorer les produits récemment mis à jour
// (en minutes : régler cette option sur 120 afin de ne mettre à jour que les produits mis à jour il y a plus de 2 heures)
if (!isset($_GET['olderthan'])) {
    $_GET['olderthan'] = 0;
}

// Clé de sécurité interne à utiliser dans CRON (ex: /modules/storecommander/XXXX/SC/cron_import_YYY.php?s_key=4hfsz65j4e68h4reh )
// et à changer !!
$localkey = '4hfsz65j4e68h4reh';

// Le résultat de l'importation est envoyé à cet email
$email_address = 'info@yourwebsite.com';

// email depuis lequel les emails seront envoyées (doit avoir le même domaine que l'url du site)
$email_from = 'contact@yourwebsite.com';

// Titre du mail
$email_title = '[CRON] Import SC';

// Url du site web pour le lien inclus dans le mail.
$websiteURL = 'https://www.yourwebsite.com';

Note importante : N'utilisez pas la clé de sécurité de cet article, celle-ci est un exemple.

Puis, placez le fichier sur votre serveur dans le dossier suivant (/XXX/ correspond à une série de chiffres/lettres spécifique à votre installation) :

/modules/storecommander/XXX/SC/cron_import_YYY.php

Il vous suffira ensuite d'appeler cette URL par le CRON de votre serveur :

www.maboutique.com/modules/storecommander/XXX/SC/cron_import_YYY.php?s_key=4hfsz65j4e68h4reh

cron_import.php

2.9 KB

Paramètre de récupération d’un fichier sur un serveur distant

Le fichier d'import que vous souhaitez automatiser avec une tâche CRON se trouve sur une URL distante.

Voici les données à ajouter au fichier de configuration php pour rendre cette action possible.

Tout d'abord, vous devez mettre en place le fichier de configuration sur votre serveur.

Pour récupérer le fichier CSV situé sur une URL distance, ajoutez les lignes ci-dessous au fichier php, à la 4è ligne, juste avant // CSV filename :

$data = file_get_contents('http://url/Du/Fichier/Distant.extension');
if($data == false) {
    die("Erreur: Impossible de récupérer les données. Vérifiez l'url de votre fichier distant et son accessibilité.");
}
if(empty($data)) {
    die("Erreur: Données vides");
}
file_put_contents('../../import/votre_fichier_csv.csv',$data);
unset($data);

Le nom que vous aurez choisi pour votre fichier CSV local devra être celui que vous indiquez dans le paramètre :

$_GET['filename'] = 'file_to_import.csv'

🕰️Paramètre de l'auto-import dans la tâche cron

Pour compléter notre article sur les imports automatisés par tâche CRON, vous pouvez également configurer plusieurs tâches CRON pour importer en plusieurs fois un gros fichier CSV.

Il faut pour cela :

• Dans le script PHP de votre tâche CRON, configurez le paramètre "olderthan" à 120 minutes par exemple, ainsi les produits qui ont été modifiés il y a moins de 120 minutes ne seront pas traités.

• Le paramètre "deletetodofile" doit rester à 0 pour que les tâches CRON poursuivent le même import et ne recommencent pas l'import depuis le début du fichier CSV.

• Configurez dans l'interface au niveau de votre script le nombre de lignes à importer au quart du nombre de lignes de votre fichier CSV (si vous avez 1956 produits par exemple, configurez le nombre de lignes à traiter à 500 pour 4 tâches CRON * 500 lignes = 2000 lignes traitées en tout)

• Puis lancez plusieurs fois de suite la tâche CRON(dans notre exemple : 4 fois toutes les 20 minutes par exemple, il faut rester dans un intervalle de 20 minutes pour éviter de réimporter plusieurs fois les mêmes informations).

Ainsi votre fichier sera traité en 4 fois au lieu d'une seule mais vous pouvez adapter ces paramètres en fonction de la taille de votre fichier CSV.