聯系信息

                        虛擬主機網站定時自動發布的思路與實現方法(php)

                        2020-02-06 11:15 By 致遠 1475
                        當前位置: 企業網站建設 > ThinkPHP > 虛擬主機網站定時自動發布的思路與實現方法(php)

                        什么是定時自動發布?

                        定時自動發布,顧名思義就是讓程序去執行,每隔x時間就發布n條網站內容。如果你有服務器,那你有多種選擇,如計劃任務等都可以實現,我這里說的定時發布算是一種通用的方法,不論是獨立服務器還是虛擬主機網站都可以使用。

                        網站定時自動發布有什么用?

                        網站定時自動發布內容對于網站優化來說是非常有必要的,它能讓蜘蛛形成習慣,給搜索引擎營造一個良好的形象。幾乎所有做seo的朋友應該都知道,有規律地更新內容。但事實上,因為各種的原因,如忙、如忘了等等,很難長時間去堅持。拿筆者來說,有時間有心情的時候可能一口氣寫十幾二十篇文章,而忙(也不一定是忙)的時候可能就什么都顧不上了。

                        一般情況下,蜘蛛在爬行完某個網站之后,抓取了該網站的所有有用信息,然后隔一段時間會再來查看網站內容是否有更新,還有沒有新的內容需要抓取,然后根據網站更新的頻率等因素逐漸養成蜘蛛定時爬行網站的習慣。因為蜘蛛的爬行特性是,網站的更新頻率決定了蜘蛛來爬行的頻率。如果網站更新的越頻繁,新內容越多,蜘蛛就會爬行的越頻繁、越快,相應的,收錄的也會越快和越多。所以,要想網站獲得好的排名,首先要保證網站的頁面收錄和蜘蛛對網站的良好爬行頻率,這樣優化做起來事倍功半。

                        虛擬主機實現定時自動發布的原理

                        應該是09年的時候,我接了第一個seo的項目,本來只是給客戶開發了網站,后來就整個承接下來了,包括內容更新、排名優化……說起來都是淚啊~當時就出現上面說到的問題,我不能堅持去更新內容,然后就有了目前的定時發布功能(懶人就需要有懶人的覺悟^_^)。

                        先看一下正常發布網站數據是怎樣一個過程:新增文章 > 編輯內容 > 點擊提交。這里需要點擊,難道我們需要用按鍵精靈?但是內容怎么來呢?按鍵精靈是無法編輯內容的。

                        換一種思路,發布內容的本質是什么?網數據庫追加一條數據。那么我們就可以讓程序來追加數據。同樣,數據哪里來?采集 > 添加,好像還不錯,只是我不需要采集,需要人工編輯,所以……

                        定時自動發布的原理其實非常簡單:數據提前錄入,在數據庫中增加一個字段,比如status,默認為0,前臺調用那些status=1的數據,那么對于前臺,對于用戶,對于搜索引擎來說,那些staus=0的數據是沒有發布的。我們只需要用程序定時把部分status=0的數據修改成status=1即可。

                        虛擬主機實現定時自動發布的方法

                        原理我們明白了,但怎么才能實現呢?虛擬主機是無法創建計劃任務的,我們也不能寫一段程序讓它一直執行(太耗資源)。最終我的做法是,當用戶訪問網站的時候觸發定時發布。比如www.kredytypozyczki.net,當用戶訪問這個網站的時候,我們來判斷是否需要發布內容就好。

                        到此,有朋友可能就要問了:我的網站是新站沒人訪問怎么辦?這個問題其實不能解決。首先,新站你必須要加更多的關注度,你的訪問也是網站的一個用戶。另外,提交搜索引擎,添加外鏈引蜘蛛(蜘蛛也是網站的用戶)都是很好的處理措施。

                        1、后臺添加對應的接口,用戶保存發布時間間隔,開始發布的時間和結束的發布時間

                        發布時間間隔 開始發布的時間和結束的發布時間

                        2、建立一個表,至少需要一個字段用于記錄上次發布的時間,如ID | time

                        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['end'] && $now-$time>$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.'blog-'.$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中調用一次即可。

                        調用php定時自動發布函數實現自動發布

                        效果與優化

                        自動發布的效果

                        上面是一個雕塑網站(www.yuhaids.com)的發布情況,從圖中可以看出發布時間間隔基本都是12分鐘。到此,我又覺得這規律性太強了,很明顯不是人為操作,不知道是不是想到了,但我還是改了一下,讓其時間看上去更自然一些。就是在更新本次發布時間的時候加一個隨機值(我取的是1到10分鐘):


                        $now=$now+rand(1,10)*60;
                         M('Time')->where('id=1')->setField('time',$now);


                        時間相對隨機的自動發布效果

                        © 致遠 2020-02-06,原創內容,轉載請注明出錯:虛擬主機網站定時自動發布的思路與實現方法(php)

                        留下您的評論

                        > 人人爽人人澡人人高潮_免费无码国产V片在线观看_18禁裸乳无遮挡免费观看_国产99在线 | 欧美_中文字幕无码无码专区 色99久久久久高潮综合影院 无码H肉动漫在线观看 麻豆春药按摩无码AV片 天堂AⅤ无码一区二区三区 乱人伦中文无码视频 亚洲 欧洲 小说 自拍 亚洲日韩一区二区一无码 人人妻人人添人人爽日韩欧美 伊人久久大香线蕉综合5G 亚洲AV中文无码乱人伦在线R▽