phpList:キュー処理をバックグラウンドで行う

前回もお話したように、配信開始したメールマガジンは一旦キューと呼ばれる場所に格納されます。そしてキュー処理をするには、ブラウザを起ち上げておかなければなりませんでした。

これはメールマガジンに登録している読者が10人程度なら数秒で終わるので問題ありませんが、読者が数百人ともなると何時間もブラウザを開きっぱなしになってしまいます。それでは不便ですよね。

今回はこのキュー処理を自動的にバックグラウンドで行なってしまおうという設定を行います。レンタルサーバによってはできないところもありますので、サーバ選びは慎重に行なってください。

設定ファイルの変更

スパムメールとされないためにも、phpListの設定ファイルを変更してメール配信速度を1秒に1通とします。lists/config/config.php に以下の行を追加してください。

define('MAILQUEUE_THROTTLE',1);
define('USE_DOMAIN_THROTTLE',1);  
define('DOMAIN_AUTO_THROTTLE',1);

実行ファイルを準備する

cronが実行するためのファイルを準備します。具体的には以下の内容の新規ファイル phplist_cron.sh を作成します。作成する場所は lists/phplist_cron.sh となります。

#!/bin/sh

wget -q -O - 'http://[独自ドメイン]/lists/admin/index.php?page=processqueue&login=[ログイン名]&password=[パスワード]' > /dev/null

ここで、[独自ドメイン]はphpListをインストールしたドメインです。[ユーザ名]は普段phpListログインしているユーザ名になります。[パスワード]にはそのユーザでログインするためのパスワードを入れましょう。

次にFTPソフト等を使って実行属性を付加します。755に設定すればいいでしょう。

ファイルのフルパスを取得

phplist_cron.php のフルパスを取得します。私の環境では

/var/www/html/lists/phplist_cron.sh

となっています。Lolipop の場合はちょっと分かりません。というより、Lolipopの場合は分からなくて結構です。後でご説明します。(フルパスはコントロールパネルには書いてありますのでご参照下さい)

lists/phplist_cron.sh

また、さくらインターネットのスタンダードプランでは

/home/[ユーザ名]/www/lists/phplist_cron.sh

となっています。人によって異なりますので慎重に調べてください。

このフルパスを調べておかないと設定ができませんので、わからない場合はコントロールパネルなどで調べるか、レンタルサーバのFAQ等に書いてないか見ておきましょう。

cronの設定

レンタルサーバによっては cron の設定ができないところがあります。サーバ選びは慎重に行いましょう。

ロリポップの場合

コントロールパネルの左サイドメニューから「WEBツール」の「cron設定」を選択します。以下の通り設定します。実行ファイルパスはフルパスではありませんので、注意して下さい。(逆にフルパスは必要ありません)

cronの設定名   : phpListキュー処理
日付 ( 月 )    : 毎月
日付 ( 日 )    : 毎日
曜日           : 毎日
時間 ( 時 )    : 毎時
時間 ( 分 )    : 10分毎
スケジュール    : 10分毎 のスケジュールで実行します
実行ファイルパス : lists/phplist_cron.sh

設定が終わったら「設 定」ボタンをクリックします。

さくらインターネットの場合

コントロールパネルから「アプリケーションの設定」内にある「cronの設定」をクリックします。

次に、「新規追加」をクリックします。そして、以下を設定します。

実行コマンド : [phplist_cron.shのフルパス]
実行日時 
 月        : *
 日        : *
 時        : *
 分        : */10
 曜日      : すべてチェック入れない
コメント    : phpListキュー処理

設定したら「送信」ボタンをクリックします。

キューの自動処理の設定が完了しました。メールマガジン送信後、メールはキューに格納されますが、この設定を行なっておけばキュー処理は自動的に行われるので手作業で処理する必要はありません。

以上でキュー処理を自動的にバックグラウンドで行う設定が完了しました。