什么是定时自动发布?就是通用的方法有什么用?
优采云 发布时间: 2021-08-18 01:10什么是定时自动发布?就是通用的方法有什么用?
什么是定时自动发布?
定期自动发布。顾名思义,程序执行完毕,每x次发布n条网站内容。如果你有一台服务器,那么你有多种选择,比如计划任务等等,你可以实现它。我这里说的定时发布是一个通用的方法,无论是单机还是虚拟主机网站都可以使用。
网站定时自动发布有什么用?
网站定时自动发布内容对于网站优化非常必要。它可以让蜘蛛养成习惯,为搜索引擎创造良好的形象。几乎所有做seo的朋友都应该知道,内容是定期更新的。但事实上,因为各种原因,比如忙碌、遗忘等,很难长久坚持下去。以作者为例,我有时间和心情的时候,可能一口气写十几个文章,但忙的时候(不一定很忙),可能什么都不在乎。
一般情况下,蜘蛛爬取到某个网站后,会抓取那个网站的所有有用信息,然后再回来查看网站的内容是否有更新,是否有新的一段时间后需要爬取内容,然后根据网站更新的频率等因素,逐渐养成蜘蛛定期爬取网站的习惯。因为蜘蛛的爬行特性是,网站的更新频率决定了蜘蛛爬行的频率。如果网站更新越频繁,新内容越多,蜘蛛爬行越频繁,速度越快,相应地,收录也会越快越多。所以,想要网站获得好的排名,首先要保证网站的页面收录和蜘蛛对网站的抓取频率很好,这样优化事半功倍.
虚拟主机实现定时自动释放的原理
应该是在2009年,我接第一个seo项目的时候,本来只为客户开发网站,然后就继承了整个东西,包括内容更新,排名优化……泪流满面。啊~那个时候就出现了上面提到的问题。不能坚持更新内容,然后还有当前定时发布功能(优采云需要优采云^_^的意识)。
我们来看看网站数据的正常发布流程:添加文章>编辑内容>点击提交。我们需要点击这里,我们需要使用按钮向导吗?但内容从何而来?密钥向导无法编辑内容。
换个思路,发布的内容本质是什么?向网络数据库中添加一条数据。然后我们可以让程序追加数据。同样,数据从哪里来? 采集> 加了,好像还不错,不过我不需要采集,需要手动编辑,所以...
定时自动发布的原理其实很简单:提前录入数据,在数据库中增加一个字段,比如status,默认为0。前台调用那些status=1的数据,然后对于前台,对于用户,对于搜索引擎,也就是说,status=0的数据还没有发布。我们只需要使用程序定期修改一些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)