0

我正在做一个项目,人们可以在这个项目中与其他人会面,比如社交网站。像这样工作:一个人在 facebook 中创建一个事件,并写下事件何时发生、事件的最大地点等,然后人们参加。

我的数据库中有一个met_with变量,我显示在用户的个人资料中,该变量的作用类似于,例如,当有人创建一个有 30 个位置的活动时,人们参加了该活动,但可能只有 15 人参加或 25 人,就像那样当用户参加那个活动时,他会见fullfilled spots - 1人。

但我面临的问题是,我想met_with在事件发生后设置变量,而不是在用户加入后,我已经使该met_with变量等于maximum spot - 1但正如我所说,它不能保证该事件将实现其最大值斑点。

我不想运行文件,met_with每天更新成员的变量,是否可以编写一个仅met with在事件发生后设置变量的函数。

这是我所做的:

// above of here, i query the db for the event, i make the $free_spots = $free_spots - 1 after user clicks attending, fetching and defining $max_spot, $free_spots exc. 

$met_with = $met_with + $max_spot - 1;
try{
$update_member_query = "UPDATE `members` SET  `met_with`=:met_with, `attended` = `attended` +1 WHERE     `id`=:userid";
$update_member_query_do = $db->prepare($update_member_query);
$update_member_query_do->bindParam(':userid', $userid, PDO::PARAM_INT);
$update_member_query_do->bindParam(':met_with', $met_with, PDO::PARAM_INT);
$update_member_query_do->execute() or die(print_r($update_member_query_do->errorInfo(), true));
}

catch(PDOException $e) {
$log->logError($e." - ".basename(__FILE__));
}
4

1 回答 1

0

我不完全确定我是否做对了,但这是我会做的:

  • 设置每日 cronjob 来处理前一天(cronjobs 之间的时间段)完成的所有事件;
  • 在那个 cronjob 中,循环遍历前一天完成的所有事件,计算所有参与者并将参与者的数量 - 1 添加到每个参与者。当然,相应地增加参与者attended人数。

底线:当用户在网站上执行任何操作时,我不会更新用户信息,而是安排它每天/定期运行。

于 2012-09-28T17:57:56.583 回答