前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >利用PHP和crontab实现定时推送链接到百度

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

作者头像
Qicloud-W
发布2023-03-07 14:53:49
3980
发布2023-03-07 14:53:49
举报
文章被收录于专栏:七云's Blog七云's Blog

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

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

代码语言:javascript
复制
<?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&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;

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

代码语言:javascript
复制
<?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&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 同理

代码语言:javascript
复制
crontab -e

vim总会玩吧

代码语言:javascript
复制
分 时 日 月 周

* * * * * 任务
0 */12 * * * php /www/wwwroot/你存放文件的路径

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

版权属于:七云‘s Blog

本文链接:https://cloud.tencent.com/developer/article/2235217

版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-11-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档