ポイント、ランク、またはnum_friendsなど、ユーザーの統計をチェックし、SOで使用されているものと同様のバッジを授与するコードを作成しようとしています。システムは、タスク (投票、コメントなど) がユーザーによって完了すると、user_id が記録され、cron ジョブによって 5 分間隔で評価されるようにキューに入れられるように設定されています。これはこれを行う最も効率的な方法ですか?バッジに関する他の投稿を見ましたが、これが好ましい方法として選択された方法であるかどうかはわかりません.
私が持っている別の質問は、これらの変数 (ポイント、ランク、num_friends) をユーザーに対して実際にチェックすることです。多数のバッジがあり、管理者が変数、演算子 (==、>= など)、および設定されている値を選択する場所に独自のバッジを追加できるようにしたいと考えています。IF 条件ステートメントでそれを評価するにはどうすればよいですか? 演算子に SWITCH を使用しようとしましたが、次のように変数を正しく評価できません。
function checkbadges($userid,$points,$rank,$friends){
global $database;
$q = $database->db_query("SELECT * FROM badges");
while($bq = $database->db_fetch_assoc($q)) {
switch($bq[badge_sign]) {
case "1":
if($bq[badge_var] == $bq[badge_value])
givebadge($userid, $bq[badge_id]);
break;
case "2":
if($bq[badge_var] >= $bq[badge_value]))
givebadge($userid, $bq[badge_id]);
break;
case "3":
if($bq[badge_var] <= $bq[badge_value]))
givebadge($userid, $bq[badge_id]);
break;
case "4":
if($bq[badge_var] != $bq[badge_value]))
givebadge($userid, $bq[badge_id]);
break;
}
}
}
eval() を使用する必要があると思いますが、方法がわかりません。助けていただければ幸いです。