利用PHP和crontab实现定时推送链接到百度
2023-06-13 09:15:36 时间
百度站长之家 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&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&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站点中 然后按路径执行访问 都可以
版权属于:七云‘s Blog 本文链接:https://www.zets.cn/article/906.html 版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。
相关文章
- 利用PHP和crontab实现typecho定时推送链接到百度
- php时间戳,php时间代码合集,时间日期转换
- PHP- 运算符-比较运算符(二)
- 隐藏Apche、Nginx、PHP的版本号提高网站安全性详解程序员
- [PHP] 命令行执行整合pathinfo模拟定时任务详解编程语言
- PHP与MySQL的紧密链接(php与mysql的关系)
- PHP与MySQL数据库之间的连接(php链接mysql)
- PHP编译MySQL:一步一步指南(php编译mysql)
- PHP操作MongoDB入门实战(php操作mongodb)
- PHP连接MSSQL库的方法(php链接mssql)
- PHP操作MySQL精彩呈现(php调用mysql)
- 教你如何用PHP获取MySQL数据库中的数据(php获取mysql数据)
- PHP与MSSQL数据库的链接方法(phpmssql链接)
- 如何在Linux上架设PHP? 25字(linux架设php)
- 学习PHP程序员必会的Linux技术(php程序员linux)
- PHP无法连接MSSQL数据库问题的解决方法(php 无法 mssql)
- PHP连接MS SQL服务器添加数据(php 添加mssql)
- PHP如何连接MS SQL服务器(php怎么链接mssql)
- PHP与MySQL实现无缝连接(php mysql 连接)
- Redis与PHP结合极致无限可能(redis 集合 php)
- PHP的历史和优缺点
- 《PHP边学边教》(02.Apache+PHP环境配置——下篇)