网站自动采集发布(什么是定时自动发布?就是通用的方法有什么用?)
优采云 发布时间: 2022-02-07 01:19网站自动采集发布(什么是定时自动发布?就是通用的方法有什么用?)
什么是定时自动释放?
定时自动发布,顾名思义,就是让程序执行,每x次发布n条网站内容。如果你有服务器,那么你有多种选择,比如计划任务等,你可以实现它。我这里说的定时发布是一个通用的方法,不管是独立服务器还是虚拟主机网站都可以使用。
网站定时自动发布有什么用?
网站定期自动发布内容对于网站优化来说是非常必要的,它可以让蜘蛛形成一种习惯,为搜索引擎创造一个好的形象。几乎所有seo朋友都应该知道,内容是定期更新的。但实际上,由于各种原因,比如忙碌、健忘等,很难长期坚持下去。以作者为例,有时间和心情的时候,可能一口气写了十几二十篇文章,但忙的时候(不一定忙),可能什么都不在乎。
正常情况下,爬取了某个网站之后,蜘蛛会抓取网站的所有有用信息,然后在一段时间后回来查看网站的内容是否更新的时间,并且没有新的内容可以爬取,然后根据网站的更新频率等因素,逐渐养成蜘蛛定期爬取网站的习惯。由于蜘蛛的爬行特性,网站 的更新频率决定了蜘蛛爬行的频率。如果 网站 更新更频繁,新内容更多,蜘蛛会爬得更频繁更快,相应地,收录 会更快更多。因此,要想对网站获得好的排名,首先要保证网站的页面收录
虚拟主机实现定时自动释放的原理
应该是在 2009 年我接手第一个 seo 项目的时候。本来只是为客户端网站开发的,然后整个流程都进行了,包括内容更新、排名优化……都是泪流满面。~上面说的问题当时就出现了,我坚持更新内容,然后就有了当前定时发布功能(优采云需要有优采云的意识^_^) .
我们先来看看正常发布网站数据的过程:添加文章>编辑内容>点击提交。我们需要点击这里,我们需要使用按钮向导吗?但内容从何而来?按钮向导无法编辑内容。
换句话说,发布内容的本质是什么?将一条数据附加到网络数据库。然后我们可以让程序追加数据。再次,数据从何而来?采集 > 加了,好像不错,不过我不需要采集,需要手动编辑,所以……
定时自动发布的原理其实很简单:提前录入数据,在数据库中添加一个字段,比如status,默认为0,前台调用status=1的那些数据,那么为前台,对于用户,对于搜索引擎,那些status=0的Data是不发布的。我们只需要使用程序定期将一些status=0的数据修改为status=1即可。
实现虚拟主机定时自动发布的方法
原理我们明白了,但是怎么实现呢?虚拟主机无法创建计划任务,我们也无法编写程序来保持其运行(资源密集型)。最后,我的方法是在用户访问 网站 时触发预定发布。比如用户访问这个网站,我们可以判断内容是否需要发布。
此时,可能有朋友要问了:我的网站是新站点,没人访问怎么办?这个问题实际上是无法解决的。首先你要多加关注新站,你的访问也是网站的用户。另外,提交给搜索引擎,添加外链蜘蛛(蜘蛛也是网站用户)都是很好的措施。
1、后台添加对应界面,用户保存发布时间间隔,开始时间和结束发布时间
2、创建一张表,至少需要一个字段来记录上次发布的时间,比如ID | 时间
3、虚拟主机实现定时自动释放功能
function autoPush(){
$conf=S('conf');//一些系统配置文件,包括站点名称、域名、发布时间间隔、开始时间、结束时间等等
if($conf['day']){//如果设定了发布时间间隔 为0的时候不自动发布
$time=M('Time')->getField('time');//上次发布时间
$now=time();//现在时间
$hour=date('H',$now);//当前几点了
if($hour>$conf['start'] && $hour$conf['day']*86400){
//如果当前小时数>发布开始时间 并且 小于发布结束时间 并且 与上次发布时间间隔超过设定的发布时间间隔 就 该发布了
//$conf['start']为发布开始时间 $conf['end']为发布结束时间 $conf['day']为发布间隔时间 我设定的是天,支持2位浮点数,如0.01天,大约为14分钟
$value=M('Article')->where('s=0')->order('id asc')->find();//找到需要发布的内容 这里的是就是上文提到的status用于判断是否发布
if($value){
//如果存在没有发布的内容
$value['s']=1;//设置为发布
$value['addtime']=$now;//设置时间(注意,前台程序的时间建议是发的时间而不是后台添加编辑的时间)
//下面的代码用于自动推送 如果你没有相关功能或需求 只需要更新数据库即可:M('Article')->save($value)
$path=M('Category')->where('id='.$value['bid'])->getField('path');
if(M('Article')->save($value)){
$url='http://www.'.$conf['domain'].'/'.$path.''.$id.'.html';
if(push($url)){
M('Article')->where('id='.$value['id'])->setField('push',1);
}
}
}
//最后,不要忘了更新那个记录上次发布时间的表
M('Time')->where('id=1')->setField('time',$now);
}
}
}
4、在前台的每个用户可访问的页面上调用此函数。在前期没有用户的情况下,建议添加后台,这样在访问后台时也可以调用该函数实现定时自动释放。我正在使用 ThinkPHP,所以在 emptyController 中调用一次。
效果与优化
以上是一个雕塑网站()的发布。从图中可以看出,发布时间间隔基本是12分钟。此时,感觉规律性太强了,明显不是人为操作。不知道有没有想过,但还是改了,让时间看起来更自然一些。就是在更新发布时间的时候加一个随机值(我用了1到10分钟):
$now=$now+rand(1,10)*60;
M('Time')->where('id=1')->setField('time',$now);
© 致远2020-02-06,原创内容,转载请注明错误:虚拟主机定时自动发布的思路及实现方法网站(php)