Files
liche/api/controllers/plan/Plan.php
T
2023-03-29 15:37:02 +08:00

170 lines
6.9 KiB
PHP

<?php
/**
* Created by PhpStorm.
* User: linfan
* Date: 19/01/17
* Time: 10:09
*/
defined('BASEPATH') OR exit('No direct script access allowed');
class Plan extends CI_Controller
{
private $plan;
protected $log_dir;
public function __construct()
{
parent::__construct();
$this->log_dir = "plan";
$plan = array();
//$plan[] = array('url' => base_url(array('plan', 'controller', 'action')), 'interval' => 30);
//执行失败的plan重跑
$plan[] = array('url' => base_url(array('plan', 'plan', 'replan')), 'interval' => 1);
//$plan[] = array('url' => base_url(array('plan', 'bobing', 'lottery')), 'interval' => 30);//博饼每日中奖
//$plan[] = array('url' => base_url(array('plan', 'bobing', 'mj')), 'interval' => 30);//马甲跑总分数
//$plan[] = array('url' => base_url(array('plan', 'bobing', 'mj_day')), 'interval' => 30);//马甲跑今日分数
//$plan[] = array('url' => base_url(array('plan', 'licheb', 'customer_visit')), 'interval' => 1);//增加客户待回访
//$plan[] = array('url' => base_url(array('plan', 'licheb', 'customer_level')), 'interval' => 1);//更新客户等级
$plan[] = array('url' => base_url(array('plan', 'licheb', 'visit_data')), 'interval' => 3);//更新客户回访记录
$plan[] = array('url' => base_url(array('plan', 'licheb', 'visit_sales')), 'interval' => 3);//客户回访顾问统计
$plan[] = array('url' => base_url(array('plan', 'licheb', 'visit_sales_sms')), 'interval' => 2);//给销售发送待回访短信
$plan[] = array('url' => base_url(array('plan', 'licheb', 'customer_manager_sms')), 'interval' => 2);//给店长发送待分配短信
$plan[] = array('url' => base_url(array('plan', 'licheb', 'users_log')), 'interval' => 2);//顾问日志
$plan[] = array('url' => base_url(array('plan', 'licheb', 'bizs_log')), 'interval' => 2);//门店日志
$plan[] = array('url' => base_url(array('plan', 'licheb', 'inventory_log')), 'interval' => 5);//更新盘点状态
$plan[] = array('url' => base_url(array('plan', 'liche', 'add_owners')), 'interval' => 5);//新增车主
$plan[] = array('url' => base_url(array('plan', 'liche', 'owners_wxqy')), 'interval' => 10);//更新车主企业微信
$plan[] = array('url' => base_url(array('plan', 'items', 'stock_log')), 'interval' => 5);//库存车辆日志
$plan[] = array('url' => base_url(array('plan', 'customer', 'statplan')), 'interval' => 5);//生成客户来源日志
$plan[] = array('url' => base_url(array('plan', 'polyv', 'view_log')), 'interval' => 5);//直播观看详情数据
$plan[] = array('url' => base_url(array('plan', 'biz', 'settle')), 'interval' => 1);
$plan[] = array('url' => base_url(array('plan', 'biz', 'merge')), 'interval' => 20); //合并结算
$plan[] = array('url' => base_url(array('plan', 'order', 'up_old_status')), 'interval' => 30); //更新旧订单状态
$plan[] = array('url' => base_url(array('plan', 'order', 'out_time')), 'interval' => 10); //未支付订单过期
$plan[] = array('url' => base_url(array('plan', 'order', 'send_aggs_biz_ding_piao_rpt')), 'interval' => 1); //向飞书发送小狸播报
$plan[] = array('url' => base_url(array('plan', 'order', 'cost')), 'interval' => 1); //添加成本表数据
// $plan[] = array('url' => base_url(array('plan', 'syt', 'subscribemsg')), 'interval' => 1); //私域通模板消息
// $plan[] = array('url' => base_url(array('plan', 'syt', 'syn_polyv')), 'interval' => 60); //私域通直播间数据同步
// $plan[] = array('url' => base_url(array('plan', 'syt', 'api_viewlog')), 'interval' => 1); //私域通直播间播放日志数据同步
// $plan[] = array('url' => base_url(array('plan', 'syt', 'union_user')), 'interval' => 1); //直播数据关联用户
$plan[] = array('url' => base_url(array('plan', 'syt', 'out_time')), 'interval' => 1); //订单过期
$this->plan = $plan;
}
public function index()
{
$plan = $this->plan;
if ($plan) {
$redis = &load_cache('redis');
echo "------ mission start " . date("Y-m-d H:i:s") . " ------\n";
foreach ($plan as $v) {
$key = 'hd_plan_job_' . md5($v['url']);
if (!$redis->get($key)) {
$this->benchmark->mark('code_start');
$res = $this->get_https($v['url']);
$res && $redis->save($key, 1, $v['interval'] * 60);
$this->benchmark->mark('code_end');
echo $v['url'] . " --- mission" . ($res ? " succ" : " fail") . " spend:" . $this->benchmark->elapsed_time('code_start', 'code_end') . "\n";
}
}
echo "Finished " . date("Y-m-d H:i:s") . "\n";
}
}
/*
* 重置计划脚本
*/
public function reset_plan()
{
$id = $this->input->get('id');
$v = $this->plan[$id];
echo json_encode($v, JSON_UNESCAPED_UNICODE) . "\n";
if ($v) {
$key = 'hd_plan_job_' . md5($v['url']);
$redis = &load_cache('redis');
if ($redis->get($key)) {
$ret = $redis->delete($key);
echo "redis del: {$ret}\n";
} else {
echo "redis not save\n";
}
}
}
//执行异常的脚本重新跑
public function replan()
{
$redis = &load_cache('redis');
$redis = $redis->redis();
$key_batch = "return_plan_batch";
$now = time();
$rows = $redis->zRangeByScore($key_batch, 0, $now);
debug_log("[info]# return_plan_batch:" . json_encode($rows), __FUNCTION__, $this->log_dir);
echo "return_plan_batch:" . json_encode($rows) . " \n";
$total = count($rows);
$done = 0;
foreach ($rows as $k => $v) {
$url = $v;
$res = $this->get_https($url);
debug_log("[info]# url={$url}; res={$res}", __FUNCTION__, $this->log_dir);
if ($res) {
$done++;
}
$redis->zRem($key_batch, $v);
}
$msg = "all:{$total}; done:{$done}";
debug_log("[info]# {$msg}", __FUNCTION__, $this->log_dir);
echo $msg;
}
private function get_https($url)
{
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_HEADER, 1);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE); //这个是重点,规避ssl的证书检查。
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE); // 跳过host验证
curl_exec($curl);
if (curl_errno($curl)) {
curl_close($curl);
return false;
}
curl_close($curl);
return true;
}
}