2017-06-23 7 views
0

自分のウェブサイトの管理領域にログインスクリプトがあると仮定し、誰かがログインするたびに、さまざまな管理者の電子メールアドレスに通知メールを送り、 (WordPressのように)プロセスを起動する前にコルーチンの遅延を追加する

様々な理由から、通常のようにログインを実行したいが、2分後などに電子メール通知を送信する必要があるとします。

明らかに、PHPはsleep機能を持っていますが、これはすべてページ処理を保持します。この例では、ユーザーログインは数分間「中断」され、スリープ時間が終了して電子メールが送信されるとログインが完了します。

  • PHPでこの(または同様の)コルーチン実行遅延を達成する方法はありますか?

私がいない疑いがあるが、それは尋ねる価値があるが、私はPHPの構造は、それが唯一のコルーチンに全体ではなく、スレッド処理に遅延を加える処理できないのです意味疑い思いました。

+0

通常の方法は、サービスをバックグラウンドで実行することです。 Unixのcronの上で動作するPHPライブラリさえあります。 –

+1

これらのサービスは何と呼ばれていますか?私はCronが可能な方法であると思ったが、私はcronの設定が動力学的に生成しにくいことも多いと感じている。 – Martin

+0

cronは単なるタスクスケジューラである。難しいのは、保留中のメッセージをチェックし、それらを送信する処理を行い、実行が重複した場合に2回送信しないPHPコマンドラインスクリプトを作成することです。 X分ごとに実行するようにスケジューリングするのは簡単です。多くのホスティングプロバイダには素晴らしいコントロールパネルがあります。 –

答えて

0

スクリプトがX分ごとに実行させるためにcronを使用して、何も実行する必要ないときにスクリプトがちょうど終了します。

からÁlvaro González

は、だから私は5分ごとに実行するcronジョブを設定し、(最後の数分以内)最近のログイン用のデータベースをチェックし、これが検出されたときに関連付けられているメールアドレスを電子メールで送信します。

悪い点は、明らかに数分おきにMySQLを呼び出すことです。 (しかし、私はこれの非効率性はかなり無視できると思う)。

関連する問題