私は、cron ジョブを使用すると言います (メールを送信するのに適した特定の時間に毎日実行できます)。cron ジョブは、すべてのユーザーを調べて、いつサインアップしたかを確認する php スクリプトを呼び出すことができます。そして、誰かが 4 週間前 (またはその倍数) にサインアップしたかどうかを確認します。この条件を満たす人は誰でも、ループを通過して mail() 関数でメールを送信できます。
クロンジョブ
サーバーのシェルにログインし、「sudo crontab -e」と入力して、次のように入力します。
30 14 * * * php path/to/some/phpscript.php
この例では、phpscript.php は毎日 14:30 (午後 2:30) に実行されます。しかし、それは毎日すべてのユーザーにメールを送信するという意味ではありません! 以下のスクリプトを参照してください。
PHP スクリプト
<?php
# get all users (or your query could choose only users who signed up (4 weeks)*n ago)
$result = mysql_query('SELECT * FROM user');
$users = array();
while($row = mysql_fetch_assoc($result)) $users[] = $row;
# loop through users and (if you didn't already check) see which ones have signed up (4 weeks)*n ago
foreach ($users as $user) {
# take the number of seconds and convert it to number of days
$today = (int)(strtotime(date('c')) / 60 / 60 / 24);
$signup_day = (int)(strtotime($user['signup_date']) / 60 / 60 / 24);
# check if the amount of days since signup is a multiple of 28 (4*7)
if (($today - $signup_day) && ($today - $signup_day) % 28 == 0) {
send_mail_to($user);
}
}
?>