Pour développer tous les aspects dynamiques de nos sites et applications web, nous utilisons principalement Lasso Professionnal, et son langage de script Lassoscript.
Queueing Emails Faster with LassoScript
Walking around scripting to send large email amount with Lasso, you noticed that the queueing process appears as the bottleneck.
Multiple threads on the lasso users list discuss about that.
I recently wrote fastBatch for our house-made emailing solution called “Alpha-Mail“. This Custom Type is an alternative to the [Email_queue] tag, designed to speed up the insertion of mails into the queue. We are really happy to share the code with the community.
Feel free to download the source and give us your feedback…
More about fastBatch
Alpha Mail : le grand labo
Une des applications phares que nous avons mis au point ici à E SYSTEMES est la solution Alpha Mail.
Il s’agit d’un environnement disponible en ligne, accessible par abonnement, qui permet d’envoyer des campagnes d’emailing au format multipart/alternative Text et HTML. Les clients d’Alpha Mail peuvent ainsi communiquer vers la liste des destinataires de leur compte. Ils disposent d’outils pour gérer leur liste, chercher, ajouter, importer, gérer les erreurs suite aux envois… Un atelier de composition des emails leur permet, en toute indépendance et sans connaissance du HTML, de créer des messages illustrés. Le système gère les abonnements et les désabonnement de façon transparente et automatique. L’utilisateur peut programmer ses envois vers des cibles de sa liste selon des créneaux horaires disponibles. Enfin, le tracking, ou suivi des liens et des ouvertures du message, rend disponible des statistiques sur les réactions de la cible de l’envoi.
Bref, un outil que nous avons voulu complet et accessible pour la PME…
Une application web Lasso
Alpha Mail est aujourd’hui dans sa version 2 (décembre 2008) et la solution est entièrement développée en Lasso Script. Les tags Lasso impliqués dans l’envoi sont [Email_Compose], pour la création de l’email à envoyer, [Email_Queue] et [Email_Send] pour ajouter l’email à la file d’attente intégrée dans l’administration de Lasso.
La plupart des aspects de l’envoi de mails sont forcement abordés dans cette solution, et en la développant nous avons acquis une sorte d’expertise dans le domaine de l’envoi d’email en nombre avec Lasso. Nous devons en grande partie ces connaissances à la communauté des développeurs Lasso. En parcourant la liste des utilisateurs de LassoScript (sur LassoTalk ou son pendant sur Nabble) vous pourrez vous rendre compte que le sujet est récurrent, et que les fils de discussion traitant de l’envoi d’emails sont légion.
Enlarge your (email) Queue*
Sur le plan technique, quand vous voulez envoyer un grand nombre de mails avec Lasso, vous utilisez donc le tag [Email_Queue]. Et avec l’expérience, et le nombre d’email à envoyer augmentant, vous vous rendrez compte que le processus de mise en file d’attente est le goulot d’étranglement de votre solution… Le processus est terriblement long.
fastBatch, a lasso Custom Type to speed up your email batch**
Il nous est apparu que le problème vient de la base SQLite dans laquelle la file d’attente est constituée par Lasso. SQlite est synchrone et à chaque ajout d’un message dans la file avec le tag [Email_Queue] le système déclenche une commande fsync() pour vérifier l’intégrité de l’enregistrement des données transmises. Dans notre cas, nous traitons facilement plus de 5 000 insertions à la suite…
L’idée est de rationnaliser ces insertions dans la table en les groupant par paquets précédés d’une instruction BEGIN puis d’une instruction COMMIT une fois l’insertion achevée. Et effectivement, le temps de mise en file des messages de la solution est divisé par 30 !
J’ai donc récemment écrit un Custom Type en LassoScript pour gérer cet aspect de la solution : fastBatch, spécialement imaginé dans le but d’accélérer l’envoi de mails en nombre. Cet objet sera intégré dans la prochaine version d’Alpha Mail, en attendant et pour relancer le débat sur le sujet nous avons décidé de livrer ce code à la communauté des développeurs Lasso.
A vos serveurs ! Nous vous proposons de tester fastBatch. Vous êtes libre de télécharger le code source, merci par avance pour votre avis, vos commentaires et votre retour sur les éventuels problèmes rencontrés, en nous donnant un maximum de détails (version de Lasso, système d’exploitation, circonstances…).
Comment fonctionne fastBatch ? Télécharger le code source
* Agrandissez votre file d’attente d’emails
** fastBatch, un tag lasso pour accélérer le traitement des emails en nombre