Outils personnels

PHPList : envoi en ligne de commande - cron

De wikiGite

Révision datée du 19 septembre 2011 à 15:56 par Frank (discussion | contributions) (Page créée avec « = Configuration = dans lists/config/config.php, ajouter l'utilisateur www-data pour qu'il soit autorisé à lancer index.php de la ligne de commande $commandline_users = arr... »)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)

Configuration

dans lists/config/config.php, ajouter l'utilisateur www-data pour qu'il soit autorisé à lancer index.php de la ligne de commande

$commandline_users = array("admin","www-data");

Autoriser l'envoi en ligne de commande

define ("MANUALLY_PROCESS_QUEUE",1);

et modifier les paramètres de MESSAGE_QUEUE (10000 mails/heure, sans pause entre chaque mail)

define("MAILQUEUE_BATCH_SIZE",10000);
define("MAILQUEUE_BATCH_PERIOD",3580);
define('MAILQUEUE_THROTTLE',0);

Noter le "3580", soit 1 heure moins 20 secondes, pour éviter que les jobs planifiées toutes les heures ne se chevauchent. Normalement Phplist sait gérer cette situation et detecter un même process déjà lancé, mais autant limiter les risques.

Eventuellement, en cas de charge trop importante, on peut baisser un peu MAILQUEUE_BATCH_SIZE et ajouter une pause entre chaque mail. Exemple :

define('MAILQUEUE_THROTTLE',0.5);

ajoute une pause d'une 1/2 seconde, donc 2 mails sont envoyés par seconde, donc un maximum de 7200 à l'heure, donc en prenant un peu de marge :

define("MAILQUEUE_BATCH_SIZE",7000);

Script cron_phplist

#!/bin/bash

# in commandline mode, access is restricted to users who are listed in the config file
# check README.commandline for more info

# identify the config file for your installation
CONFIG=/var/www/phplist/lists/config/config.php
USER=www-data
export CONFIG USER

# alternatively you can use -c <path to config file> on the commandline
# run the PHPlist index file with all parameters passed to this script
date
/usr/bin/php /var/www/phplist/lists/admin/index.php $*

Planifier ce script dans la crontab de www-data

15 * * * * /var/www/phplist/lists/cron_phplist -pprocessqueue >> /var/www/phplist/lists/cron_phplist.log 2>&1

Note : créer /var/www/phplist/lists/cron_phplist.log et donner les droits d'écriture à www-data, pour être sûr d'avoir les logs des envois.

Utilisation

  1. ) créer le message
  2. ) sélectionner d'éventuels critères
  3. ) selectionner une liste
  4. ) dans divers donner un email pour notification de début/fin d'envoi

ensuite aller dans message => brouillon et "remettre dans la file d'attente" le message.

La tâche cron enverra ce qui est dans la file d'attente.