123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- <?php
- /**
- 用户活跃统计
- */
- namespace App\Console\Commands\SendOrder;
- use Log;
- use Illuminate\Console\Command;
- use App\Modules\User\Services\ReadRecordService;
- use App\Modules\User\Services\UserService;
- use DB;
- class UserActivityStats extends Command
- {
- /**
- * 执行命令 php artisan SendOrder:userActivityStat
- *
- * The name and signature of the console command.
- *
- * @var string
- */
- protected $signature = 'SendOrder:userActivityStat {loop} {loop_add}';
- /**
- * The console command description.
- *
- * @var string
- */
- protected $description = '月活统计';
- /**
- * Execute the console command.
- *
- * @return mixed
- */
- public function handle()
- {
- ini_set('memory_limit', '1024M');
- print_r('memory_used:'.memory_get_usage()."\n");
- print_r("======月活统计【任务执行开始】=====".date("y-m-d H:i:s"."\n"));
-
- $base_loop = $loop = $this->argument('loop');
- $loop_add = $this->argument('loop_add');
-
- $one_month_ago = strtotime(date('Y-m-d'))-30*24*3600;
- $start = date('Y-m-d',strtotime('-30 day'));
- $end = date('Y-m-d');
-
-
- $loop_end = $loop+$loop_add;
- $limit = 10000;
- $active_user_num = 0;
- \Log::info('userActivityStat_start:loop:'.$loop.' active_user_num:'.$active_user_num);
-
- while($loop < 3000 && $loop < $loop_end){
- // 获取用户,每次1w
- $offset = $limit*($loop-1);
- $users = UserService::getUserList($limit,$offset);
- if(is_null($users)){
- \Log::info('userActivityStat_break:base_loop:'.$base_loop.' loop:'.$loop.' active_user_num:'.$active_user_num);
- break;
- }
- foreach($users as $user){
- // 获取最近阅读时间
- $read_recodes = ReadRecordService::getReadRecord($user->id);
- // \Log::info($read_recodes);
- $last_read_time = isset($read_recodes[0]['time'])?$read_recodes[0]['time']:'0';
- //\Log::info('last_read_time:'.$last_read_time.' one_month_ago:'.$one_month_ago);
- // 如果再一个月内
- if($last_read_time > 0 && $last_read_time > $one_month_ago){
- $active_user_num ++;
- }
- }
- \Log::info('userActivityStat:loop:base_loop:'.$base_loop.' loop:'.$loop.' active_user_num:'.$active_user_num);
- $loop++;
- }
- \Log::info('userActivityStat_end_base_loop:'.$base_loop.' loop:'.$loop.' active_user_num:'.$active_user_num);
-
- print_r("======月活统计 【任务执行结束】=====".date("y-m-d H:i:s"."\n"));
- print_r('memory_used:'.memory_get_usage()."\n");
- }
- }
|