2

MySQLデータベースに予約/予定が保存されているPHPベースのサイトがあります。

予約の24時間前に予約した人にメールで通知するように設定したい。予約は通常のPHPフォームを介して追加されます。

たとえば、データベースで最後の24時間の予約をチェックするスクリプトをインデックスページに追加できることはわかっていますが、最初はトラフィックが少ないため、信頼性が低くなります。したがって、インデックスページは訪問なしで何時間も行く可能性があり、通知は数時間遅れます。

頭に浮かんだもう1つの解決策は、毎分実行されるcronジョブを設定し、PHPスクリプトを呼び出して、電子メールを送信する必要があるかどうかを確認して送信することです。しかし、これがある意味でやり過ぎかどうかはわかりません。誰かが毎分バックグラウンドで何かを実行するよりも良い解決策を持っていますか?

要約すると、cronなしでこれを行う方法はありますか?

4

4 に答える 4

1

Webページからジョブをトリガーすることは、2つの理由から、非常に悪い考えです。(1)サイトへのトラフィックがない場合、ジョブは実行されません。(2)通知をたくさん受け取ると、ジョブはWeb要求への応答を遅くします(ジョブを同期的に呼び出すと仮定します)。

私はあなたが毎分仕事をすることを強く思いとどまらせます-それは間違いなくやり過ぎでしょう。代わりに、間隔として「正確に24時間」が本当に必要か、それとも「22〜26時間」で問題ないかを考えてください。

同様の要件があります。4時間ごとに実行されるジョブを設定し、スクリプトの実行時間から22〜26時間の間に開始するイベントに対してどの通知を送信する必要があるかを確認します。このように、スクリプトは1日に6回だけ実行され、すべてが正しく送信されます。

4時間の概算では不十分な場合は、適切な最大間隔を考えてください。1時間で十分だと思います。スクリプトを1時間に1回(cronから)実行し、実行時から23〜24時間の間に開始するイベントを確認します。

メールが送信されると、すぐに受信者の受信トレイに届かないことを忘れないでください。数秒かかることもあれば、1時間以上かかることもあります。そのため、スクリプトに1時間余分に差が生じることはありません。問題。

于 2012-05-17T16:28:12.970 に答える
0

毎分cronジョブは意味がありません!ただし、1時間の差や2時間は計測されないと思うので、1時間ごとにcronジョブを実行できます。cronがなければ、他の方法はありません。完了するまでに約2秒(最大)かかるため、価値があります

于 2012-05-17T16:27:10.940 に答える
0

間隔を空けたタイマーとしてcronを使用する必要はありません。あなたはあなたがあなたの仕事を終わらせたい非常に特定の日時を設定することができます。

これがこのテーマに関する記事です

例えば:

0 0 18 5 * <php command here>

毎年5月18日深夜に実行されます。それは次の反復(来年)の前にそれをクリアするのに十分な時間です。

于 2012-05-17T16:22:37.750 に答える
0

cronを設定するか、定期的な呼び出しを介してサーバーにリクエストを送信する以外に方法はありません...以下はあなたの質問に似た投稿です、あなたはアイデアを得るかもしれません。

JSONまたはAJAXを使用した定期的なサーバー呼び出しに基づくライブリダイレクト

ありがとう

于 2012-05-17T16:24:02.167 に答える