Skip to content

Posts tagged ‘newsletter’

21
déc
allocine-ie9

HTML5 : Allociné est plus rapide avec IE9 !

Quelle ne fût pas ma surprise ce matin en découvrant le contenu de la newsletter « Allociné ». Le titre m’a tout de suite attiré  :

« Allociné est plus rapide avec Internet Explorer 9″ Lire la suiteRead more

29
oct

Magento : la cron – intérêts et fonctions du core

Comme vous le savez surement si vous avez déjà mis en place un Magento, une « cron » ou en français « tâche planifiée » doit être programmée lors de la mise en place de votre ecommerce Magento. Si vous avec un Magento mais ne connaissez pas l’existence de cette tâche, inquiétez-vous et renseignez vous sur ce point avec votre hébergeur ou responsable du développement.

En effet, cette cron est indispensable au bon fonctionnement de votre plateforme ecommerce. Non seulement elle va vous permettre de mettre en place des scripts automatiques (gestion de stock externalisée, envoi de mailing) spécifiques à vos besoins mais surtout elle va exécuter différentes fonctions déjà présentes dans le core de Magento. Le but de ce billet est justement de présenter les impacts précis de cette tâche sur votre plateforme Magento. Nous savons qu’il faut exécuter le fichier ‘cron.php’ à intervalle régulier (toutes les 15 minutes semble une bonne base) mais il est toujours intéressant d’en connaître les implications.

Le fichier « cron.php » de Magento ne va donc pas servir uniquement à une fonction précise. Il va en fait utiliser la configuration de votre plateforme (via les fichiers « config.xml »), lire les informations contenues dans les noeuds et exécuter le script demandé. Rien de mieux qu’un exemple pour expliquer le principe.

Prenons le cas de l’envoie de newsletter via Magento. Dans le fichier « app/code/core/Mage/Newsletter/etc/config.xml », vous pouvez trouver cet ensemble de noeud :

<crontab>
  <jobs>
    <newsletter_send_all>
      <schedule>
        <cron_expr>*/5 * * * *</cron_expr>
      </schedule>
      <run>
        <model>newsletter/observer::scheduledSend</model>
      </run>
    </newsletter_send_all>
  </jobs>
</crontab>

Ceci correspond à la définition ou plutôt à la configuration d’exécution du script générant le plan de site XML.

  1. « newsletter_send_all » est le nom de la tâche à exécuter.
  2. Pour cette tâche, « schedule » va indiquer à quel moment cette tâche doit être accompli.
    Dans cet exemple, l’intervalle de temps est toutes les 5 minutes (se reporter à la définition d’une crontab pour connaître la syntaxe du planning d’une tâche).
  3. L’élement « run » indique  le script qui devra être appelé lorsque l’intervalle de temps sera atteint.

Donc si vous créez un nouveau module qui se charge par exemple de supprimer des clients de façon totalement aléatoire ( prenez une bonne assurance RC Pro auparavant tout de même, car on ne sait jamais, votre client pourrait ne pas trop apprécier ), il vous suffira de rajouter ce type de noeud « crontab » dans la configuration XML de votre module.

Revenons à nos moutons. Quels sont les scripts éxécuter « par défaut » via la cron Magento ?

Ils sont au nombre de 12 (version Magento 1.4.0.1) :

  1. Rafraichissement des rapports concernant les coupons de promotions : salesrule/observer::aggregateSalesReportCouponsData
  2. Mise à jour des règles de prix catalogue : catalogrule/observer::dailyCatalogUpdate
  3. Connexion à Paypal et vérification des états de commande : paypal/observer::fetchReports
  4. Met à jour les statistiques sur les taxes pour la journée J-1 : tax/observer::aggregateSalesReportTaxData
  5. Ré-indexation des prix en fonction du type de produit, groupe client, taxes … : catalog/product_indexer_price::reindexAll
  6. Envoi des newsletter : newsletter/observer::scheduledSend
  7. Efface les paniers expirés : sales/observer::cleanExpiredQuotes
  8. Gère les statistiques de commande : sales/observer::aggregateSalesReportOrderData
  9. Gère les statistiques d’expédition : sales/observer::aggregateSalesReportShipmentData
  10. Gère les statistiques de facturation : sales/observer::aggregateSalesReportInvoicedData
  11. Gère les statistiques d’avoirs : sales/observer::aggregateSalesReportRefundedData
  12. Gère les statistiques sur les meilleurs ventes … : sales/observer::aggregateSalesReportBestsellersData

L’explication pourrait aller beaucoup plus loin. sachez que la cron crée un planning d’éxécution. Le calcul sur le timing n’est pas fait à chaque fois. De temps en temps (définissable en administration), la cron va créer un planning des exécutions de ces scripts, ce qui permettra de rapidement appelé chaque script sans avoir à recalculer les intervalles …