X皮書(shū)之shell實(shí)戰(zhàn)開(kāi)發(fā)
序
最近正在忙于開(kāi)發(fā)豆瓣數(shù)據(jù)同步,主要原因是豆瓣接口不給力,超過(guò)一定的訪問(wèn)量就抓不到它的數(shù)據(jù)。所以決定把豆瓣的數(shù)據(jù)導(dǎo)入到本地服務(wù)器,然后使用我們自己的數(shù)據(jù)。
導(dǎo)入數(shù)據(jù)的腳本我已經(jīng)開(kāi)發(fā)完了?,F(xiàn)在就剩下命令行調(diào)用了。今天我就專(zhuān)門(mén)研究了下shell的應(yīng)用,我把我的思考過(guò)程寫(xiě)一下。
準(zhǔn)備
這是要使用的php測(cè)試腳本(并不是我的線上代碼,只是一個(gè)樣例)。
- <?php
- if ($_SERVER['argc'] < 2) {
- echo "調(diào)用不正確!\n";
- echo "調(diào)用方式:";
- echo "php {$_SERVER['argv'][0]} { rsync_show | rsync_show_by_id 1231123 | rsync_douban }\n";
- exit(-1);
- }
- function rsync_show() {
- echo "調(diào)用節(jié)目數(shù)據(jù)\n";
- }
- function rsync_show_by_id($id) {
- if(emptyempty($id)){
- echo "缺少參數(shù)...\n";
- exit(-1);
- }
- echo "根據(jù)指定ID開(kāi)始導(dǎo)入節(jié)目數(shù)據(jù)\n";
- }
- function rsync_douban() {
- echo "調(diào)用豆瓣數(shù)據(jù)層\n";
- }
- foreach ($_SERVER['argv'] as $k => $v) {
- if($k == 0) continue;
- if($v == 'rsync_show_by_id'){
- call_user_func($v, $_SERVER['argv'][2]);
- break;
- }else{
- call_user_func($v);
- }
- }
- exit(0);
查看幾個(gè)調(diào)用結(jié)果
錯(cuò)誤1
錯(cuò)誤2
正確的調(diào)用方式
通過(guò)crontab -e設(shè)置個(gè)定時(shí)執(zhí)行腳本
#p#
shell 腳本
1、開(kāi)始使用shell腳本編程
運(yùn)行腳本
2、添加一個(gè)停止腳本
3、函數(shù)整理
#p#
shell 查漏補(bǔ)缺
兩大問(wèn)題:1、是不是再寫(xiě)一個(gè)方法?2、怎么傳參???
第一個(gè)問(wèn)題,直接用start方法就行了,沒(méi)必要再寫(xiě)一個(gè)方法!——多寫(xiě)一個(gè)方法是要付出代價(jià)的。
第二個(gè)問(wèn)題怎么解決,我忽然想到在我們安裝開(kāi)源軟件的時(shí)候喜歡這么用,如下圖
所以我決定也使用類(lèi)似的方法作為參數(shù)傳遞之用。
具體看我下面的方法調(diào)用啊!
運(yùn)行腳本
重點(diǎn):
放入crontab中
我在php的源代碼中的configure中發(fā)現(xiàn)了一個(gè)不錯(cuò)的輸出字符的方法,與大家分享
運(yùn)行效果
總結(jié)
這就是我今天收獲的一些東西,shell我也不是很精通。如果大家有更好的建議,希望告知一、二。
原文鏈接:http://www.cnblogs.com/baochuan/archive/2012/10/24/2737723.html
【編輯推薦】