2011-01-16 4 views
0

私は、指定された時間の15分前に特定のユーザーがログインする必要があるPHPベースの予定スケジューリングアプリケーションを使用しています。指定時間前にユーザーがログインしているかどうかを確認する必要があります

ユーザーがログインすることを忘れた場合は、cronジョブの助けを借りて電子メールリマインダーを送信する必要があります。

ユーザーがログインしているかどうかを確認するフラグをデータベースに追加しました。このフラグはログイン時にオンになり、ユーザーが手動でサインオフするとオフになります。

ユーザーのセッションの有効期限はいつですか?この要素を考慮に入れて、私はcronジョブで何を実装すべきですか?

答えて

1

(おそらくデータベースを使用して)独自のカスタムセッションハンドラを実装する必要があります。 PHPのデフォルトのハンドラは、期限切れの/ガベージ・コレクションされたセッションを検出するための監視/イベント通知を公開しません。

あなた手動でセッションファイルを介し強打する外部プロセスを使用することができますが、それはやや際どいです:セッションが期限切れにすることができ、あなたの監視スクリプトが行う前に、PHPのガベージコレクタは、それに到達します。

データベースに「ログイン」フラグを格納している場合、ログインしていないユーザーをチェックするcronジョブが最も簡単な方法ですが、ジョブのスケジュール設定はいくぶんか醜い。任命された時間が本質的にランダムである場合は、毎分実行するジョブ(最短の間隔cronが直接サポートする)か、イベントごとに個別のジョブをスケジュールする必要があります。あまり粗いスケジューリングポイントでは、おそらくcronのワイルドカード/固定小数点構文を使用することができます。 "*/5,10,15、... * * * *"

+0

私は、ユーザーにオンラインであることを確認させる手段を使用しています。確認が完了すると、タイムスタンプがデータベースに保存されます。 cronジョブは、確認が時間通りに行われたかどうかを確認します。 – Enthusiast

関連する問題