在同一秒多个百度蜘蛛并发访问站群内某个url如何保证随机抽取准备锁定关键词的唯一性
一般情况下百度来蜘蛛都是多个蜘蛛一起来,多个不同ip的蜘蛛来多次,正常情况都是间隔几秒。有的时候就是同时在1秒内来,程序锁定关键词与url的对应关系就要用到事务锁定。让第一个蜘蛛来的时候开启锁定,等待完成再释放,第二个蜘蛛直接看到第一个蜘蛛访问锁定的缓存信息,保证seo的唯一性。
以下是关键词锁定的核心模块。
// echo 'create cache';
if($is_spider || $is_moni_spider|| $is_ad==0){ //百度蜘蛛或者是关闭广告
$k_setkid='setkid_'.md5($url_md5);
$v_setkid=time();
$pika2->watch($k_setkid);
$pika2->multi();
if(count($arr_types)>0){
$qz=roll($arr_types_quanzhong);//根据权重随机取一个
$site_type=$qz;//很重要
}
// echo 'lock setkid ok!';
$kid=get_kid_sj();
$k_type=$qz;
}else{
}
$pika2->set($k_setkid, $v_setkid);
$res = $pika2->exec();
if ($res) {
// 成功...
// echo 'success:';
}else{
// 失败...
// 设置HTTP状态码为503
header('HTTP/1.1 503 Service Temporarily Unavailable1');
// 记录错误信息
souji($is_souji,2,'zhizhu_wait2.com',$url,$ip,'zhizhu wait','',0);
exit();
}
}
}