利用PHP和crontab实现定时推送链接到百度

百度站长之家 https://ziyuan.baidu.com 获取自己站点的推送接口

http://data.zz.baidu.com/urls?site=https://www.zets.cn&token=xxxxxxxxxxx 大概就这个样子

<?php
//数据量不大用这个
// Load sitemap from URL
$xmldata = file_get_contents("https://www.zets.cn/sitemap.xml", true);

// Parse XML into an array $xmlstring = simplexml_load_string($xmldata, ‘SimpleXMLElement’, LIBXML_NOCDATA); $value_array = json_decode(json_encode($xmlstring), true);

// Extract URLs from the array $urls = array_column($value_array[‘url’], ‘loc’);

// Set up cURL request $api = ‘http://data.zz.baidu.com/urls?site=https://www.zets.cn&amp;token=xxxx’; $ch = curl_init(); $options = [ CURLOPT_URL => $api, CURLOPT_POST => true, CURLOPT_RETURNTRANSFER => true, CURLOPT_POSTFIELDS => implode(“\n”, $urls), CURLOPT_HTTPHEADER => [‘Content-Type: text/plain’], ]; curl_setopt_array($ch, $options);

// Execute cURL request and print result $result = curl_exec($ch); echo $result;

有个哥们跟我说他有几十万数据,呃呃,好吧,数据量庞大用下面这个,但百度一天不就能提交那么几千条么,还是说我井底之蛙了

<?php
//站点地图庞大用这个
// 定义 cURL 封装函数
function curl_request($url, $method = 'GET', $data = [], $headers = []) {
  $ch = curl_init();
  $options = [
    CURLOPT_URL => $url,
    CURLOPT_RETURNTRANSFER => true,
  ];

if ($method == ‘POST’) { $options[CURLOPT_POST] = true; $options[CURLOPT_POSTFIELDS] = $data; }

if (!empty($headers)) { $options[CURLOPT_HTTPHEADER] = $headers; }

curl_setopt_array($ch, $options); $result = curl_exec($ch); curl_close($ch); return $result; }

// 从 URL 加载站点地图 $xmldata = file_get_contents(“https://www.zets.cn/sitemap.xml”, true);

// 将 XML 解析成一个数组 $xmlstring = simplexml_load_string($xmldata, ‘SimpleXMLElement’, LIBXML_NOCDATA); $value_array = json_decode(json_encode($xmlstring), true);

// 从数组中提取 URL $urls = array_column($value_array[‘url’], ‘loc’);

// 设置 cURL 请求 $api = ‘http://data.zz.baidu.com/urls?site=https://www.zets.cn&amp;token=uneOOjU6IY41hXgW’; $headers = [‘Content-Type: text/plain’];

// 批量处理URL $batchSize = 1000; $numBatches = ceil(count($urls) / $batchSize); for ($i = 0; $i < $numBatches; $i++) { // 提取一批网址 $batch = array_slice($urls, $i * $batchSize, $batchSize); // 为该批次设置 POST 数据 $result = curl_request($api, ‘POST’, implode(“\n”, $batch), $headers); // 打印结果 echo $result; } ?>

如果利用宝塔的话可以直接计划任务比如我12小时执行一次(自行操作,不演示了)

crontab 同理

crontab -e

vim总会玩吧

分 时 日 月 周
          • 任务 0 */12 * * * php /www/wwwroot/你存放文件的路径

如果嫌麻烦,也可以直接放到你任意一个php站点中 然后按路径执行访问 都可以

THE END