成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

php定時執(zhí)行任務(wù)(定時刪除用戶過期積分)

endiat / 1449人閱讀

摘要:最近網(wǎng)站實行用戶積分過期制度,只保留用戶近三月積分,三月前未使用積分進行扣除平臺用戶量比較大,感覺這樣做會出問題,有沒有好的解決方法服務(wù)器代碼如下近三月使用積分扣除用戶過期積分添加過期積分扣除日志總過期積分過期積分未消費完應(yīng)扣

最近網(wǎng)站實行用戶積分過期制度,只保留用戶近三月積分,三月前未使用積分進行扣除
*平臺用戶量比較大,感覺這樣做會出問題,有沒有好的解決方法?(windows iis服務(wù)器)
代碼如下:

ignore_user_abort(); 
set_time_limit(0); 
do{
    $this->del_score();
    sleep(24*3600);
}while (true);

private function del_score()
{
    $date = to_date(to_timespan(to_date(TIME_UTC)." -3 month"),"Y-m-d");
    
    // 近三月使用積分
    $user_scores = $GLOBALS["db"]->getAll("SELECT user_id,sum(score) as score FROM ".DB_PREFIX."user_score_log WHERE score<0 AND create_time_ymd > "".$date."" GROUP BY user_id");
    
    // 扣除用戶過期積分
    $update_sql = "UPDATE ".DB_PREFIX."user SET score = score - CASE id ";

    // 添加過期積分扣除日志
    $insert_sql = "INSERT INTO ".DB_PREFIX."user (`user_id`, `score`, `account_score`, `mome`, `type`, `create_time`, `create_time_ymd`, `create_time_ym`, `create_time_y`) VALUES ";

    foreach ($user_scores as $k => $v) {
        // 總過期積分
        $old_account_score = $GLOBALS["db"]->getOne("SELECT account_score FROM ".DB_PREFIX."user_score_log WHERE user_id=".$v["user_id"]." AND create_time_ymd<=".$date." ORDER BY id DESC LIMIT 1");
        if($old_account_score > abs($v["score"])) // 過期積分未消費完
        {
            $arr[$v["user_id"]] = $v["score"];

            // 應(yīng)扣除積分
            $score = intval($account_score - abs($v["score"]));
            $update_sql .= sprintf("WHEN %d THEN %d ", $v["user_id"], $score);

            // 賬戶現(xiàn)有積分
            $account_score = $GLOBALS["db"]->getOne("SELECT score - {$score} FROM ".DB_PREFIX."user WHERE id=".$v["user_id"]);
            $create_time = TIME_UTC;
            $create_time_ymd = to_date(TIME_UTC,"Y-m-d");
            $create_time_ym = to_date(TIME_UTC,"Ym");
            $create_time_y = to_date(TIME_UTC,"Y");
            $insert_sql .= "(".$v["user_id"].",-".$score.",".$account_score.","積分到期未使用部分扣除",26,".$create_time.","".$create_time_ymd."","".$create_time_ym."","".$create_time_y.""),";
        }
        continue; 
    }
    $ids = implode(",", array_keys($arr)); 
    $update_sql .= " END WHERE id IN ($ids)";
    $insert_sql = substr($insert_sql, 0, -1);
    $GLOBALS["db"]->query($update_sql);
    $GLOBALS["db"]->query($insert_sql);
} 

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://hztianpu.com/yun/22116.html

相關(guān)文章

  • 定時器在大型web項目中的應(yīng)用和實現(xiàn)

    摘要:在軟件項目中,定時器也被應(yīng)用到了各方各面,本文將從項目入手,講述定時器,本文的例子都以為例。定時器總類定時器有兩種對應(yīng)重復任務(wù)和一次性任務(wù)。 在大規(guī)模分布式系統(tǒng)中,每個業(yè)務(wù)都可能是集群,每個業(yè)務(wù)機都會產(chǎn)生定時任務(wù),不同的業(yè)務(wù)會有不同的任務(wù)管理需求,統(tǒng)一的任務(wù)調(diào)度和管理變得非常有必要。 定時如何準確,大量的定時被同時觸發(fā)怎么辦? 定時結(jié)束的時候,怎么通知業(yè)務(wù)機去處理呢? 某臺業(yè)務(wù)機下線...

    douzifly 評論0 收藏0
  • 定時器在大型web項目中的應(yīng)用和實現(xiàn)

    摘要:在軟件項目中,定時器也被應(yīng)用到了各方各面,本文將從項目入手,講述定時器,本文的例子都以為例。定時器總類定時器有兩種對應(yīng)重復任務(wù)和一次性任務(wù)。 在大規(guī)模分布式系統(tǒng)中,每個業(yè)務(wù)都可能是集群,每個業(yè)務(wù)機都會產(chǎn)生定時任務(wù),不同的業(yè)務(wù)會有不同的任務(wù)管理需求,統(tǒng)一的任務(wù)調(diào)度和管理變得非常有必要。 定時如何準確,大量的定時被同時觸發(fā)怎么辦? 定時結(jié)束的時候,怎么通知業(yè)務(wù)機去處理呢? 某臺業(yè)務(wù)機下線...

    whataa 評論0 收藏0
  • laravel 任務(wù)調(diào)度實例

    摘要:導語之前寫過使用的進行定時任務(wù),實際上也可以執(zhí)行定時任務(wù)。需求是統(tǒng)計每日訪問的數(shù),雖然數(shù)據(jù)表中有數(shù)據(jù),為了演示,新建監(jiān)聽器統(tǒng)計。記錄這篇文章中介紹了實現(xiàn)了事件監(jiān)聽器,在此基礎(chǔ)上進行擴展。 導語 之前寫過使用 Linux 的進行定時任務(wù),實際上 laravel 也可以執(zhí)行定時任務(wù)。需求是統(tǒng)計每日訪問的 IP 數(shù),雖然數(shù)據(jù)表中有數(shù)據(jù),為了演示,新建監(jiān)聽器統(tǒng)計。 記錄 IP 這篇文章中介紹了...

    loonggg 評論0 收藏0

發(fā)表評論

0條評論

endiat

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<