0

私は人々がソーシャルウェブサイトのように他の人々と会うプロジェクトに取り組んでいます。次のように機能します。1人が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

これが正しいかどうかは完全にはわかりませんが、次のようにします。

  • 1日(cronジョブ間の期間)前に終了したすべてのイベントを処理するように、毎日のcronジョブを設定します。
  • そのcronジョブで、前日に終了したすべてのイベントをループし、すべての参加者をカウントして、参加者の数(すべての参加者に1)を追加します。そしてもちろん、attendedそれに応じて参加者数を増やします。

結論:ユーザーがサイトで何かをしたときにユーザー情報を更新するのではなく、毎日/定期的に実行するようにスケジュールします。

于 2012-09-28T17:57:56.583 に答える