不知道你網(wǎng)站是什么系統(tǒng)。以下是wordpress一個(gè)非常粗糙的蜘蛛記錄功能原理??勺鰠⒖?/p>
網(wǎng)站建設(shè)、成都做網(wǎng)站介紹好的網(wǎng)站是理念、設(shè)計(jì)和技術(shù)的結(jié)合。創(chuàng)新互聯(lián)公司擁有的網(wǎng)站設(shè)計(jì)理念、多方位的設(shè)計(jì)風(fēng)格、經(jīng)驗(yàn)豐富的設(shè)計(jì)團(tuán)隊(duì)。提供PC端+手機(jī)端網(wǎng)站建設(shè),用營銷思維進(jìn)行網(wǎng)站設(shè)計(jì)、采用先進(jìn)技術(shù)開源代碼、注重用戶體驗(yàn)與SEO基礎(chǔ),將技術(shù)與創(chuàng)意整合到網(wǎng)站之中,以契合客戶的方式做到創(chuàng)意性的視覺化效果。
1.首先,在wordpress主題根目錄建立一個(gè)robots.php文件,寫入以下內(nèi)容:
function get_naps_bot()
{
$useragent = strtolower($_SERVER[\'HTTP_USER_AGENT\']);
if (strpos($useragent, \’googlebot\’) !== false){
return \’Googlebot\’;
}
if (strpos($useragent, \’msnbot\’) !== false){
return \’MSNbot\’;
}
if (strpos($useragent, \’slurp\’) !== false){
return \’Yahoobot\’;
}
if (strpos($useragent, \’baiduspider\’) !== false){
return \’Baiduspider\’;
}
if (strpos($useragent, \’sohu-search\’) !== false){
return \’Sohubot\’;
}
if (strpos($useragent, \’lycos\’) !== false){
return \’Lycos\’;
}
if (strpos($useragent, \’robozilla\’) !== false){
return \’Robozilla\’;
}
return false;
}
function nowtime(){
$date=gmdate(\”Y-n-j H:i:s\”,time()+8*3600);
return $date;
}
$searchbot = get_naps_bot();
if ($searchbot) {
$tlc_thispage = addslashes($_SERVER[\'HTTP_USER_AGENT\']);
$url=$_SERVER[\'HTTP_REFERER\'];
$file=\”robotslogs.txt\”;
$time=nowtime();
$data=fopen($file,\”a\”);
fwrite($data,\”Time:$time robot:$searchbot URL:$tlc_thispage\\n\”);
fclose($data);
}
?
將其上傳于你的主題目錄內(nèi)。
2.在Footer.php或header.php的適當(dāng)位置添加以下代碼調(diào)用robots.php。
程序原理:通過對(duì)蜘蛛標(biāo)識(shí)符(如Baiduspider、Googlebot)的判斷,記錄蜘蛛爬行時(shí)間,并生成日志文件robotslogs.txt于根目錄。
程序缺點(diǎn):無法記錄蜘蛛爬行的頁面,功能較為簡單。
以前我用過querylist插件抓數(shù)據(jù),服務(wù)器寫和定時(shí)器,每天固定時(shí)間去運(yùn)行腳本。朝這個(gè)方式試試
高并發(fā)下數(shù)據(jù)的更新,應(yīng)該 update table xxx set num = num - 1 的方式,這種方式可以保證數(shù)據(jù)的正確性。
但是會(huì)出現(xiàn) num 為負(fù)數(shù)的問題,如果庫存為負(fù)數(shù),顯然是不合理的。
于是,需要將 num 字段設(shè)置為 無符號(hào)整型,這樣就不會(huì)出現(xiàn)負(fù)數(shù)了,因?yàn)?,如果減到負(fù)數(shù),就會(huì)更新失敗。
但是這種依然會(huì)造成很多無用的更新語句的執(zhí)行,是不合理的。
于是,update table xxx set num = num - 1 where num 0,
這樣當(dāng) num 等于0之后就不會(huì)去更新數(shù)據(jù)庫了,減少了很多無用的開銷。
這種方式被稱作“樂觀鎖”
此外,對(duì)于搶紅包這種非整數(shù)的操作,我們應(yīng)該轉(zhuǎn)換為整數(shù)的操作。
關(guān)于搶購超賣的控制
一般搶購功能是一個(gè)相對(duì)于正常售賣系統(tǒng)來說獨(dú)立的子系統(tǒng),這樣既可以防止搶購時(shí)的高并發(fā)影響到正常系統(tǒng),
也可以做到針對(duì)于搶購業(yè)務(wù)的特殊處理。
在后臺(tái)設(shè)計(jì)一些功能,可以就昂正常的商品加入到搶購活動(dòng)中并編輯成為搶購商品,寫入到搶購商品表,當(dāng)然
也可以把搶購商品表寫入redis而不是數(shù)據(jù)表。并且在原商品表寫入一個(gè)同樣的商品(id相同,用于訂單查看,
此商品不可購買)
如果是數(shù)據(jù)表,為了控制超賣,需要對(duì)表進(jìn)行行鎖,更新的時(shí)候帶上 where goods_amount 0。
如果是redis,使用 hincrby 一個(gè)負(fù)數(shù)來減庫存,并且 hincrby 會(huì)返回改變后的值,再來判斷返回值是否大于0,
因?yàn)閞edis每個(gè)命令都是原子性的,這樣不用鎖表就可控制超賣。
分享我的一個(gè)收藏
打開phpstorm,依次點(diǎn)擊 File-Settings...-Plugins,此時(shí)會(huì)看到這樣的一個(gè)界面
點(diǎn)擊圖中紅框標(biāo)注的按鈕(Browse repositories),然后再彈出的窗口上方搜索位置,
輸入 (powe),完整的插件名稱叫做 activate-power-mode,但是因?yàn)槲覀冞€有一個(gè)插件要裝,所以輸入powe就夠了,結(jié)果大概如圖所示
看到圖中紅框所標(biāo)注的兩個(gè)插件了嗎,在右側(cè)點(diǎn)擊install進(jìn)行安裝,因?yàn)槲乙呀?jīng)安裝過了,所以沒有install。安裝完需要重啟來生效,如果特效有卡頓,請(qǐng)切換一個(gè)文件打開,再切回來,一般就可以了,一般這個(gè)只會(huì)出現(xiàn)在第一次打開編輯器的時(shí)候,里面只打開了一個(gè)文件
可以選擇安裝其中的一個(gè),也可以都安裝,我是兩個(gè)都安裝的,說一下他們的區(qū)別
activate-power-mode: 包含鼠標(biāo)點(diǎn)擊,代碼輸入等等的粒子特效,
power-mode 2: 只包含代碼輸入時(shí)的火焰特效,這個(gè)很炫的,下面上張圖演示一下
另外再說一個(gè),這兩個(gè)特效默認(rèn)都是包含屏幕抖動(dòng)的特效的,其中power mode ?2可以通過設(shè)置取消,但是activate-power-mode就不可以了,如果需要這個(gè)也不抖動(dòng)的效果的,可以下載我重新編譯的插件文件,安裝方式為上圖中第三個(gè)按鈕from disk
看到粒子和火焰的特效了嗎,親如果滿意,請(qǐng)~~喲
安裝了wamp的環(huán)境
PHP框架(我是用了CI)
MySql的數(shù)據(jù)庫管理軟件Navicat for MySQL