8 && $h < 18){
//总共10小时
// 1.当前任务将由哪个类来负责处理。
// 当轮到该任务时,系统将生成一个该类的实例,并调用其 fire 方法
$jobHandlerClassName = 'app\jobs\cms\Tag';
// 2.当前任务归属的队列名称,如果为新队列,会自动创建
$jobQueueName = "TagJobQueue";
// 3.当前任务所需的业务数据, 不能为 resource 类型,其他类型最终将转化为json形式的字符串
// (jobData 为对象时,存储其public属性的键值对 )
$area = Db::connect('db1')
->table('ey_citysite')
->where(['level'=>1,'is_open'=>1,'status'=>1])
//->limit(1)
->select();
//dump($area);
$area[] = [
'id' => 10000,
'name' => '主站',
];
foreach ($area as $k=>$v){
//http://console.zx2049.com/api/cms/tagHandle?taskid=10&diqu=1
$jobData = ['ts' => time(),'url'=>'http://console.zx2049.com/api/cms/tagHandle','taskid'=>10, 'area_id' => $v['id'], 'area_name' => $v['name']];//当前任务所需的业务数据
// 4.将该任务推送到消息队列,等待对应的消费者去执行
$isPushed = Queue::push($jobHandlerClassName, $jobData, $jobQueueName);
// database 驱动时,返回值为 1|false;redis 驱动时,返回值为 随机字符串|false
//域名解析存在两条 *.dev
//这里明明返回0 0 !== false 是成立的
//以为一直成功 结果根本没插入数据库
//既然能执行到这里的代码 为何无法插入数据库 返回0
if( $isPushed !== false ){
echo date('Y-m-d H:i:s') . " a new Hello Job is Pushed to the MQ" . "
";
}else{
echo 'Oops, something went wrong.';
}
echo "
";
}
}else{
echo "不在任务时间段内".$h;
}
}
/*
* 队列处理任务
* https://queue.dev.zx2049.com/index/Cms/taskHandle
*/
public function taskHandle()
{
$h = date('H', time());
$h = (int)$h;
if ($h > 8 && $h < 18) {
// 1.当前任务将由哪个类来负责处理。
// 当轮到该任务时,系统将生成一个该类的实例,并调用其 fire 方法
$jobHandlerClassName = 'app\jobs\cms\Task';
// 2.当前任务归属的队列名称,如果为新队列,会自动创建
$jobQueueName = "TaskJobQueue";
// 3.当前任务所需的业务数据, 不能为 resource 类型,其他类型最终将转化为json形式的字符串
// (jobData 为对象时,存储其public属性的键值对 )
$area = Db::connect('db1')
->table('ey_citysite')
->where(['level' => 1, 'is_open' => 1, 'status' => 1])
//->limit(1)
->select();
//dump($area);
$area[] = [
'id' => 10000,
'name' => '主站',
];
foreach ($area as $k => $v) {
//http://console.zx2049.com/api/cms/tagHandle?taskid=10&diqu=1
$jobData = ['ts' => time(), 'url' => 'http://console.zx2049.com/api/cms/taskHandle', 'taskid' => 10, 'area_id' => $v['id'], 'area_name' => $v['name']];//当前任务所需的业务数据
// 4.将该任务推送到消息队列,等待对应的消费者去执行
$isPushed = Queue::push($jobHandlerClassName, $jobData, $jobQueueName);
// database 驱动时,返回值为 1|false;redis 驱动时,返回值为 随机字符串|false
//域名解析存在两条 *.dev
//这里明明返回0 0 !== false 是成立的
//以为一直成功 结果根本没插入数据库
//既然能执行到这里的代码 为何无法插入数据库 返回0
if ($isPushed !== false) {
echo date('Y-m-d H:i:s') . " a new Hello Job is Pushed to the MQ" . "
";
} else {
echo 'Oops, something went wrong.';
}
echo "
";
}
}else{
echo "不在任务时间段内".$h;
}
}
/*
* 百度提交api
* 主动推送
* 晚上12点执行
* https://queue.dev.zx2049.com/index/Cms/baiduSearchApi
*/
public function baiduSearchApi(){
$num = 1;
$area = Db::connect('db1')
->table('ey_citysite')
->where(['level' => 1, 'is_open' => 1, 'status' => 1])
//->limit(1)
->select();
//dump($area);
$area[] = [
'id' => 10000,
'name' => '主站',
'domain' => 'www'
];
//dump($area);
$arr = [];
foreach ($area as $k => $v) {
//31区域(30+1-www) 山东关闭, 11个无法添加站点 , 剩余19个
//'yunnan','guizhou','zhongqing','sichuan' 这4个未添加站点
$pl = ['sx','xinjiangweiwuer','ningxia','qinghai','gansu','xicangzizhi','hainan','heilongjiang','jilin','liaoning','namenggu','yunnan','guizhou','zhongqing','sichuan'];
//echo $v['id'].'
';
if(in_array($v['domain'], $pl)){
//echo "---------------------
";
echo $num.'-'.$v['domain']."不存在站点,无法添加!
";
//echo "---------------------
";
$num++;
}else{
$list = Db::connect('console')->table('yzn_task')
->where('diqu','=',$v['id'])
->where('is_run','=',1)
->where('is_ts','=',0)
->limit(1)
->select();
foreach ($list as $in => $row){
//echo $row['link'].'
';
$arr[$v['id']]['list'][] = $row['link'];
$arr[$v['id']]['ids'][] = $row['id'];
}
$arr[$v['id']]['domain'] = $v['domain'];
if(empty($arr[$v['id']]['list'])){
//echo "---------------------
";
echo $num.'-'.$v['domain']."获取执行记录为空,无最新记录!
";
$num++;
//echo "---------------------
";
}
}
}
foreach ($arr as $k => $v){
//查询今日已发了几条
$count = Db::connect('console')->table('yzn_task')->where([
'diqu' => $k,
'is_run' => 1,
'is_ts' => 1,
])
->whereTime('ts_time', 'today') //推送时间
->count();
// dump($count); die;
if($count >= 10){
//超过10条
//假设没有手动提交的记录 只有api提交
echo $num.'-'.$v['domain']."已提交达到10条记录
";
$num++;
}else {
$urls = array();
if (!empty($v['list'])) {
foreach ($v['list'] as $key => $item) {
$urls[] = $item;
}
/* dump($urls);
dump($v['domain']);
dump($v['ids']);*/
if (!empty($urls)) {
$api = 'http://data.zz.baidu.com/urls?site=https://' . $v['domain'] . '.gdzcfw.com&token=Jc7Qp1sfpQYGcaqY';
$ch = curl_init();
$options = array(
CURLOPT_URL => $api,
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POSTFIELDS => implode("\n", $urls),
CURLOPT_HTTPHEADER => array('Content-Type: text/plain'),
);
curl_setopt_array($ch, $options);
$result_s = curl_exec($ch);
$result = json_decode($result_s, true);
if (isset($result['success']) && (int)$result['success'] > 0) {
//推送成功 按站点批量提交
Db::connect('console')->table('yzn_task')->where('id', 'in', $v['ids'])->update(['is_ts' => 1, 'ts_time' => time()]);
//插入日志
$insert_data = [
'catid' => 11,
'title' => '域名' . $v['domain'] . '提交情况-本次条数(' . $result['success'] . ')-剩余('.$result['remain'].')',
'content' => json_encode($arr) . '
百度原始响应结果:
' . $result_s,
'create_time' => time(),
'update_time' => time(),
'status' => 1,
'site_id' => 1,
'cid' => 0,
];
Db::connect('console')->table('yzn_log')->insert($insert_data);
echo $num.'-'.$insert_data['title']."
";
$num++;
} else {
$insert_data = [
'catid' => 11,
'title' => '域名' . $v['domain'] . '提交情况(失败)',
'content' => $result_s,
'create_time' => time(),
'update_time' => time(),
'status' => 0, //标识 失败
'site_id' => 1,
'cid' => 0,
];
Db::connect('console')->table('yzn_log')->insert($insert_data);
echo $num.'-'.$insert_data['title']."
";
$num++;
}
}
}
}
}
//dump($arr);
}
}