データベース テーブルをチェックするために毎分実行する必要がある cron ジョブがあります。テーブルは 2 つのフィールド (ユーザー名、lastping) で構成されます。lastping は、mysqlNOW()
関数を使用して別のスクリプトによって設定される mysql 日時オブジェクトです。lastping をチェックして、最後に更新されてから 1 分以上経過しているかどうかを確認する必要があります。最後の 1 分間更新されていない場合は、そのユーザー名と lastping を含む行を削除したいと考えています。このSQLステートメントのようなものを使用して確認できると思います。
FROM client WHERE lastping < NOW() - INTERVAL 1 MINUTE;
私の質問は、テーブル全体に対してこのチェックを行い、1 分以上経過している場合はレコードを削除するように select ステートメントをフォーマットする方法です。
まだ接続しているユーザーのために、15 ~ 30 秒ごとにデータベースを更新します。これの全体的な目的は、その瞬間、または少なくとも過去 60 秒以内にどのエンドユーザーが私の C++ アプリケーションを使用しているかを確認できるようにすることです。これにより、統計を保持できます。
これは私がこれまで行ってきたことです。出力は Deleted inactive users ですが、実際には発生しません。
mysql_connect(SERVER, USERNAME, PASSWORD);
mysql_select_db(DATABASE);
$query="DELETE (username, lastping) from client where lastping < NOW() - INTERVAL 1 MINUTE";
mysql_query($query) or die ('Error updating database');
echo "Deleted inactive users";