利用宝塔面板计划任务执行自动推送网址到百度(多站点版)

2024年03月25日 自动推送网址到百度 利用宝塔来进行百度推送 百度自动推送的办法 怎么能自动百度推送 懒猪技术

不久前发布过利用宝塔自动百度推送的文章,传送门:https://www.lmcjl.com/php/989.html,但是只能推送一个站点,然后收到小伙伴留言,原文如下:介于懒人的需求 博主能否在增加个功能,一个文件 PHP 可以调用多个不同的多个网站XML 百度推送的提交的代码 ,这样计划添加一个就可以了。作为宠粉博主,话不多说,直接安排~


第一步:

在站点根目录新建一个PHP文件,例如:baidu.php,并复制下方代码添加到baidu.php文件中。

注意:需要修改的博主都已经添加了注释,多个站点只需参考示例的两个数组进行增加,然后保存。

<?php
header('Content-Type:text/html;charset=utf-8');
// ini_set('max_execution_time',600);//脚本超时,秒为单位,自己根据需要定义

/** 多个站点只需在这里面新增数组 **/
$data = array(
    array(
        'url' => 'https://www.lmcjl.com/sitemap.xml',// 这里修改你站点的xml地图链接
        'api' => 'http://data.zz.baidu.com/urls?site=https://www.lmcjl.com&token=111111111'// 这里修改为你在百度站长获取到的推送接口
    ),
    array(
        'url' => 'https://www.lmcjl.com/sitemap2.xml',// 这里修改你站点的xml地图链接
        'api' => 'http://data.zz.baidu.com/urls?site=https://www.lmcjl.com&token=222222222'// 这里修改为你在百度站长获取到的推送接口
    ),
);
/** 多个站点只需在这里面新增数组 **/

foreach($data as $value){
    echo '================================<br/>';
    echo $value['url'].'<br/>';
    post_Baidu($value['url'],$value['api']);
}

function post_Baidu($xml_url, $baidu_api) {
    $xmldata =file_get_contents($xml_url);
    $xmlstring = simplexml_load_string($xmldata,'SimpleXMLElement',LIBXML_NOCDATA);
    $value_array = json_decode(json_encode($xmlstring),true);
    $url = [];
    for ($i =0;$i < count($value_array['url']);$i++){
        // echo $value_array['url'][$i]['loc']."<br/>";
        $url[]= $value_array['url'][$i]['loc'];
    }
    //百度推送接口一次只支持推送2000条数据,所以超过2000条的话需要分组推送
    $url_group = array_chunk($url,2000);
    $count=count($url_group);
    for($i=0;$i<$count;$i++){
        $ch = curl_init();
        $options = array(
        CURLOPT_URL => $baidu_api,
        CURLOPT_POST => true,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_POSTFIELDS => implode("\n",$url_group[$i]),
        CURLOPT_HTTPHEADER => array('Content-Type:text/plain'),
      );
      curl_setopt_array($ch, $options);
      $result =curl_exec($ch);
      curl_close($ch);
      echo $result.'<br/>';
    }
}
?>

第二步:

登陆你们的宝塔面板,按照下图进行操作就完事。


好了,就是这么简单,步骤几乎和之前单站点推送的教程一样~

悄悄告诉你,其实博主直接写的,博主也没测试过emm,如果有什么问题请留言博主~


2022年12月7日补充:

有小伙伴留言或私信说他按教程来了但是报错:file_get_contents(): SSL operation failed with code 1

出现这种情况可以尝试关闭证书验证,既将上方第25行代码:$xmldata =file_get_contents($xml_url);替换为下方代码即可解决:

// 忽略SSL验证
$stream_opts = [
    "ssl" => [
        "verify_peer"=>false,
        "verify_peer_name"=>false,
    ]
];
$xmldata =file_get_contents($xml_url, false, stream_context_create($stream_opts));

本文链接:http://so.lmcjl.com/news/364/

展开阅读全文
相关内容