123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188 |
- <?php
- /**
- * Created by PhpStorm.
- * User: sogndb
- * Date: 2018/02/05
- * Time: 下午5:26
- */
- namespace App\Console\Commands\SendOrder;
- use Log;
- use Illuminate\Console\Command;
- use App\Modules\SendOrder\Services\SendOrderService;
- use App\Modules\Statistic\Services\WapVisitStatService;
- use DB;
- use Redis;
- class SetExtraStats extends Command
- {
- /**
- * 执行命令 php artisan send_order:set_extra_stats
- *
- * The name and signature of the console command.
- *
- * @var string
- */
- protected $signature = 'send_order:set_extra_stats';
- /**
- * The console command description.
- *
- * @var string
- */
- protected $description = '派单额外数据uv24小时设置';
- /**
- * Execute the console command.
- *
- * @return mixed
- */
- public function handle()
- {
- ini_set('memory_limit', '1024M');
- print_r('memory_used:'.memory_get_usage()."\n");
- print_r("======派单额外数据uv24小时设置 【任务执行开始】=====".date("y-m-d H:i:s"."\n"));
- Log::info("======派单额外数据uv24小时设置 【任务执行开始】=====".date("y-m-d H:i:s"."\n"));
- $start = date('Y-m-d H:i:s',strtotime('-1 day') - 120);
- $end = date('Y-m-d H:i:s',strtotime($start)+240);
- collect(DB::select("select send_orders.id,send_orders.send_time,uv_one_day from send_orders left join send_order_extra_stats on send_order_extra_stats.send_order_id = send_orders.id where send_orders.send_time >= '{$start}' and send_orders.send_time <= '{$end}'"))->each(function ($send_order){
- if($send_order->uv_one_day === null)
- {
- $uv_one_day = $this->getOneDayUv($send_order->id);
- $pv_one_day = $this->getOneDayPv($send_order->id);
- $time = date('Y-m-d H:i:s');
- $data = [
- 'uv_one_day'=>$uv_one_day,
- 'pv_one_day'=>$pv_one_day,
- 'send_order_id'=>$send_order->id,
- 'send_time'=>$send_order->send_time,
- 'created_at'=>$time,
- 'updated_at'=>$time
- ];
- DB::table('send_order_extra_stats')->insert($data);
- }
- });
- $start = date('Y-m-d H:i:s',strtotime('-3 days') - 120);
- $end = date('Y-m-d H:i:s',strtotime($start)+240);
- collect(DB::select("select send_orders.id,send_orders.send_time,send_order_extra_stats.id as extra_id,uv_three_day from send_orders left join send_order_extra_stats on send_order_extra_stats.send_order_id = send_orders.id where send_orders.send_time >= '{$start}' and send_orders.send_time <= '{$end}'"))->each(function ($send_order){
- if($send_order->uv_three_day === null)
- {
- $uv_three_day = $this->getThreeDayUv($send_order->id);
- $pv_three_day = $this->getThreeDayPv($send_order->id);
- $time = date('Y-m-d H:i:s');
- $data = [
- 'uv_three_day'=>$uv_three_day,
- 'pv_three_day'=>$pv_three_day,
- 'updated_at'=>$time
- ];
- DB::table('send_order_extra_stats')->where('id',$send_order->extra_id)->update($data);
- }
- });
- Log::info("======派单额外数据uv24小时设置 【任务执行结束】=====".date("y-m-d H:i:s"."\n"));
- print_r("======派单额外数据uv24小时设置 【任务执行结束】=====".date("y-m-d H:i:s"."\n"));
- print_r('memory_used:'.memory_get_usage()."\n");
- }
- //采集24小时uv
- private function getOneDayUv($id)
- {
- $today = date('Y-m-d');
- $yesterday = date('Y-m-d',strtotime('-1 day'));
- $one_day_uv = 0;
- $redis_uv = Redis::hgetall('send_order_uv_'. $id);
- $one_day_uv += isset($redis_uv[$today]) ? (int)$redis_uv[$today] : 0;//当天从redis获取
- $yesterday_uv = isset($redis_uv[$yesterday]) ? (int)$redis_uv[$yesterday] : 0;
- if(!$yesterday_uv)
- {
- //从数据库中获取v
- $yesterday_uv_pv = WapVisitStatService::getSendOrderDayUvPvFromStat($id, $yesterday);
- $yesterday_uv = $yesterday_uv_pv['uv'];
- }
- $one_day_uv += $yesterday_uv;
- return $one_day_uv;
- }
- //采集24小时pv
- private function getOneDayPv($id)
- {
- $today = date('Y-m-d');
- $yesterday = date('Y-m-d',strtotime('-1 day'));
- $one_day_pv = 0;
- $redis_pv = Redis::hgetall('send_order_pv_'. $id);
- $one_day_pv += isset($redis_pv[$today]) ? (int)$redis_pv[$today] : 0;//当天从redis获取
- $yesterday_pv = isset($redis_pv[$yesterday]) ? (int)$redis_pv[$yesterday] : 0;
- if(!$yesterday_pv)
- {
- //从数据库中获取
- $yesterday_uv_pv = WapVisitStatService::getSendOrderDayUvPvFromStat($id, $yesterday);
- $yesterday_pv = $yesterday_uv_pv['pv'];
- }
- $one_day_pv += $yesterday_pv;
- return $one_day_pv;
- }
- //采集72小时uv
- private function getThreeDayUv($id)
- {
- $today = date('Y-m-d');
- $yesterday = date('Y-m-d',strtotime('-1 day'));
- $the_day_before_yesterday = date('Y-m-d',strtotime('-2 day'));
- $three_days_ago = date('Y-m-d',strtotime('-3 day'));
- $one_day_uv = 0;
- $redis_uv = Redis::hgetall('send_order_uv_'. $id);
- $one_day_uv += isset($redis_uv[$today]) ? (int)$redis_uv[$today] : 0;//当天从redis获取
- $yesterday_uv = isset($redis_uv[$yesterday]) ? (int)$redis_uv[$yesterday] : 0;
- if(!$yesterday_uv)
- {
- //从数据库中获取v
- $yesterday_uv_pv = WapVisitStatService::getSendOrderDayUvPvFromStat($id, $yesterday);
- $yesterday_uv = $yesterday_uv_pv['uv'];
- }
- $one_day_uv += $yesterday_uv;
- $the_day_before_yesterday_uv_pv = WapVisitStatService::getSendOrderDayUvPvFromStat($id, $the_day_before_yesterday);
- $one_day_uv += $the_day_before_yesterday_uv_pv['uv'];
- $three_days_ago_uv_pv = WapVisitStatService::getSendOrderDayUvPvFromStat($id, $three_days_ago);
- $one_day_uv += $three_days_ago_uv_pv['uv'];
- return $one_day_uv;
- }
- //采集72小时pv
- private function getThreeDayPv($id)
- {
- $today = date('Y-m-d');
- $yesterday = date('Y-m-d',strtotime('-1 day'));
- $the_day_before_yesterday = date('Y-m-d',strtotime('-2 days'));
- $three_days_ago = date('Y-m-d',strtotime('-3 days'));
- $one_day_pv = 0;
- $redis_pv = Redis::hgetall('send_order_pv_'. $id);
- $one_day_pv += isset($redis_pv[$today]) ? (int)$redis_pv[$today] : 0;//当天从redis获取
- $yesterday_pv = isset($redis_pv[$yesterday]) ? (int)$redis_pv[$yesterday] : 0;
- if(!$yesterday_pv)
- {
- //从数据库中获取
- $yesterday_uv_pv = WapVisitStatService::getSendOrderDayUvPvFromStat($id, $yesterday);
- $yesterday_pv = $yesterday_uv_pv['pv'];
- }
- $one_day_pv += $yesterday_pv;
- $the_day_before_yesterday_uv_pv = WapVisitStatService::getSendOrderDayUvPvFromStat($id, $the_day_before_yesterday);
- $one_day_pv += $the_day_before_yesterday_uv_pv['pv'];
- $three_days_ago_uv_pv = WapVisitStatService::getSendOrderDayUvPvFromStat($id, $three_days_ago);
- $one_day_pv += $three_days_ago_uv_pv['pv'];
- return $one_day_pv;
- }
- }
|