Tags

Related Posts

Share This

Cron pour la file d’attente de Phplist

Phplist est un script php assez complet (et parfois complexe) qui permet de gérer en ligne l’envoi de newsletters via une interface http. Lorsqu’on a une liste comportant un nombre important d’adresses, les choses se corsent un peu pour le traitement de l’envoi qui a tendance au time out et nécessite de surveiller son envoi et traiter manuellement, heure par heure, la file d’attente.

Heureusement, le script prévoit une possibilité de faire effectuer cette tâche par le serveur au moyen d’une tâche cron. Une configuration et quelques ajustements sont néanmoins nécessaires.

1) Allez dans le fichier list/config/config.php et définissez dans la variable $commandline_users l’utilisateur du système qui effectuera la tâche en cron (attention il s’agit de l’utilisateur du serveur et pas de l’admin défini dans le logiciel). Nous prendrons comme exemple l’utilisateur root pour simplifier. Ce doit être en tout cas un utilisateur qui a le droit d’effectuer des tâches en lignes de commande. Notre exemple donnera $commandline_users = array(« root »);

2) Dans les fichiers livrés avec le script, vous trouverez un répertoire nommé bin dans lequel se trouve un fichier nommé phplist. Editez ce fichier et personnalisez le en indiquant bien les chemins de vos répertoires vers les fichiers du script.

Exemples : CONFIG=/home/monsite/www/lists/config/config.php

et

/usr/bin/php /home/monsite/lists/admin/index.php $*

(dans ce cas /usr/bin/php est le chemin de php sur votre serveur)

3) Chargez ce fichier (en root) dans le répertoire bin de votre site qui se trouve au dessus de la racine du répertoire web et rendez-le exécutable (chmod 775).

4) Certains serveurs disposent de cgi mais pas de cli. Pour parer à toute éventualité, éditez le fichier list/admin/index.php et, vers la ligne 25, remplacez if (php_sapi_name() == « cli ») { par if (php_sapi_name() == « cli » || php_sapi_name() == « cgi ») {

5) Configurez une tâche cron pour l’utilisateur root avec la ligne

/usr/bin/php /home/monsite/www/lists/admin/index.php -pprocessqueue >/dev/null 2>&1

(>/dev/null 2>&1 est optionnel mais vous permettra de ne pas être notifié par mail à chaque fois que la tâche est effectuée)

6) Testez. Si vous avez un message du type « Permission denied », éditez le fichier list/admin/index.php et remplacez les occurences de $_SERVER[« USER »] par $_SERVER[« LOGNAME »] (normalement il y en a deux).

Vous pouvez également lancer la file d’attente via ssh avec la même commande (où vous enlèverez >/dev/null 2 >&1)

 

Voilà, normalement, le serveur devrait être en mesure de traiter la longue file d’attente à votre place pendant que vous prenez le café 😉