3

ユーザーがデータベースに入力されると、4 週間ごとに電子メールが送信され、たとえばフィードバックを提供するように通知する Web アプリケーションの機能を作成したいと考えています。私が探しているのはcronジョブだと聞いたことがありますが、他に何があるか知りたいのですが、おそらくphpスクリプトが存在するか、それを行う簡単な方法がありますか?

彼らがデータベースに入ってからカウントダウンを開始してから4週間が経過するまでのカウントダウンのようなものが欲しいです。これが可能であれば、私に知らせてください! ありがとうございました

4

1 に答える 1

4

私は、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);
    }
}
?>
于 2013-07-13T21:06:12.803 に答える