PHP自动判断用户会员过期,php,_定时扣除用户过期积分,但平台用户量比较大,有没有好的解决方法?,php - phpStudy...
定時扣除用戶過期積分,但平臺用戶量比較大,有沒有好的解決方法?
最近網站實行用戶積分過期制度,只保留用戶近三月積分,三月前未使用積分進行扣除
但平臺用戶量比較大,感覺這樣做會出問題,有沒有好的解決方法?(windows iis服務器)
代碼如下:
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'];
// 應扣除積分
$score = intval($account_score - abs($v['score']));
$update_sql .= sprintf("WHEN %d THEN %d ", $v['user_id'], $score);
// 賬戶現有積分
$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);
}
相關閱讀:
php-fpm 加載php.ini失敗,明明有這個配置文件的啊
rxbus連續發送消息報錯
pycharm 自動刪除行尾空格
scala的泛型類型的下界定該如何理解》》
fs.writeFile 的問題 node 并發問題
vue的ui框架除了VUX用的比較多,還有什么UI是比較好的?
spring-data-mongo的mongoTemplate在spring的taskExecutor中異步執行異常
apacheds添加攔截器
esxi 6.5 虛擬內存如何設置?
大部分數據沒有行溢出的text字段是否需要拆表
前后端是如何進行協作交互的?
python 模擬操作 如何判斷某個窗口是否隱藏在托盤,如何最大化,最小化?
Django框架下如何實現非法登錄次數限制的功能?
transition 設置動畫是,用calss正常。用id 就沒有動畫,為什么?
請問jq有哪些方法檢測一個元素里面是否含有指定的元素
vuex組件里打印this.$store.state為undefined,求解?
mysql如何優化這條更新語句?
前端模塊化開發遇到的問題,zepto引入報錯
整數0賦值給字符型變量,再以整型輸出的結果為什么會出現48?【HDO 1002 A + B Problem II】
connection.ops.date_trunc_sql() 方法詳解
總結
以上是生活随笔為你收集整理的PHP自动判断用户会员过期,php,_定时扣除用户过期积分,但平台用户量比较大,有没有好的解决方法?,php - phpStudy...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 薪酬管理的基本原则 薪酬管理的基本原则简
- 下一篇: 七情六欲指的是什么意思 七情六欲分别是什