4

自分用に通知スクリプトを作成しようとしています。これが私が達成しようとしていることです。ユーザーが登録しているとき、私は彼らの電子メールアドレスと彼らから与えられた通知日を取得し、これらをプロファイルテーブルに保存しています。指定された通知日に、アプリケーションは自動的に電子メールを送信します。これまでのところ、これを簡単に行うための私の考えは、「イベント」を使用することです。しかし、私が間違っている場合はお気軽に修正してください。ここでの私の考えに基づいて、私がやろうとしていることは次のとおりです。メールの場合、イベントのデータとしてクラスを登録することがあります。

しかし、私の最初の質問は、その通知日のイベントをリッスンするにはどうすればよいですか?

そして、毎月通知を送信したいので、メールを送信した後、ユーザーが指定した古い通知日に 1 か月を追加します。通知日を保存しながら、入力に「カーボン」を使用しているため、1 か月を追加するのは簡単です。

2 番目の質問は、通知日が更新された後、そのイベントを再びリッスンするにはどうすればよいですか?

最後に、100 人のユーザーがいて、ユーザーが指定した通知日と、毎月の初めなどの特定の日に同じ通知を全員に送信したい場合。どうすればそれを繰り返し行うことができますか?

私が考えていることの代わりに、実装しやすいかもしれないあらゆる種類の提案をお気軽にお寄せください。

4

1 に答える 1

1

あなたが達成しようとしていることは、スケジュールされたコマンドを使用して行う方がよいと思います。一部の人々は、スケジュールされたときに特定の機能を呼び出すcron ジョブを作成することによってこれを行います。

Laravel 4 (これがあなたが使っているものだと思います) には、ディスパッチャと呼ばれる indatus による素晴らしいパッケージがあります。優れたドキュメントがあるため、設定方法については説明しませんが、x 日 / 分ごとなどにチェックするスケジュールされたジョブを作成できます。また、より読みやすくなります。

Dispatcher を使用すると、cron ジョブと比較して非常に読みやすくなります。次に例を示します。

Indatus\Dispatcher\Scheduling\ScheduledCommand を使用します。Indatus\Dispatcher\Scheduling\Schedulable を使用します。Indatus\Dispatcher\Drivers\DateTime\Scheduler を使用します。

class MyCommand extends ScheduledCommand {

//your command name, description etc.

public function schedule(Schedulable $scheduler)
{
    //every day at 4:17am
    return $scheduler
        ->daily()
        ->hours(4)
        ->minutes(17);
}

}

```

この機能はlaravel 5 に組み込まれているため、そのバージョンを使用している場合、追加のパッケージをインストールする必要はありません。

それが役に立てば幸い。

[編集 :] ディスパッチャの設定方法と使用方法に関する Jeffrey Way による素晴らしいビデオは、ここにあります。

于 2015-02-22T03:27:29.220 に答える