利用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&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站点中 然后按路径执行访问 都可以