2017-11-16 3 views
-1

に応じて、私のPHPファイルを実行したい毎月クライアントが時間を設定した場合、私は、私はreportemail.phpファイルと呼ばれるPHPファイルを持って、そして、私は毎日、毎週のように3つの値を持つダウン一滴を、持っているクライアントの可能性

毎日私はファイル(reportemail)を実行したいと私は毎朝電子メールを送信したいと思います..そして、私はこれを行うにはlocalhostで、server.andではなく、私はシステムがシャットダウンモードまた、

私はすでにcron.batファイルでうまくいっていますが、手作業では手動で与えていましたが、私は動的に与えたいと思っています。ここで

私はcronを使用して、この

<script> 
    setTimeout(function() { 
     window.location.reload(); 
    }, 5 * 60 * 1000); 

    document.write(new Date()); 
</script> 
+2

知っておくといい。何か質問がありますか? – Andreas

+0

:)あなたはどうすればいいのか説明できますか? – user200

+0

はcronファイルの引数として渡されます。php reportemail.php 3 –

答えて

1

のように私の電子メールコードやスクリプトコードを持って、私はcron.batファイルに

E:\xampp\php\php.exe -f E:xampp/htdocs/custom/reportemail.php 

そしてreportemail.phpファイル内をやった方法ですまだ方法ですここに行く。スケジュールされたイベントとスケジューラをちょっと分けたいだけです。

ユーザーがcronジョブのスケジューリング自体を作成または変更しないようにしないでください。代わりに、最も狭い時間枠(毎日)で実行するユニバーサルcronジョブをスケジュールします。その単一の仕事:

  • 実行予定のユーザーレポートを確認します。
  • これらのレポートが最後に正常に実行された時点と、再度レポートを実行するタイミングがあるかどうかを確認します。
  • レポートを実行します。

cronジョブをスケジュールする代わりに、ユーザーはレポートをいつ実行するかを示すレコードをデータベースに保存するだけです。例えば、このようなテーブルを検討:

UserReports 
---------- 
ID (PK) 
UserID (which user) 
ReportID (which report to run) 
ScheduleID (which frequency - daily, weekly, etc.) 
LastRunDate (date of the last successful run) 

cronジョブを実行するたびに、それがこの表から基準を満たすすべてのレコードを選択します:

  • ScheduleIDは毎日で、LastRunDateです1+日前、
  • ScheduleIDは毎週あるかとLastRunDateは日前7+である、または
  • ScheduleIDが毎月あるとLastRunDateは1+ヶ月前
です

これらの基準を満たすレコードをループし、レポートを実行して、今日の新しいLastRunDateでレコードを更新します。

+0

ok thats fine。 。私たちがcronでそれをしたいのであれば、私たちのシステムは常にアクティブな儀式でなければならないのですか?それだけで電子メールの儀式を送るでしょうか? – user200

+0

@ user200:「私たちのシステムはアクティブでなければならない」とはどういう意味ですか?システムの電源がオンになっている必要がありますか?それからはい、そうです。 – David

+0

システムがシャットダウンされていればOKですメールを送信することもできますか? – user200

関連する問題