<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      川山甲

      追求內心的非常平靜!瞬間清空所有的雜念,達到物我兩忘!

        博客園  :: 首頁  ::  :: 聯系 :: 訂閱 訂閱  :: 管理
       
       
        最近正在忙于開發豆瓣數據同步,主要原因是豆瓣接口不給力,超過一定的訪問量就抓不到它的數據。所以決定把豆瓣的數據導入到本地服務器,然后使用我們自己的數據。
       
        導入數據的腳本我已經開發完了。現在就剩下命令行調用了。今天我就專門研究了下shell的應用,我把我的思考過程寫一下。
       
      準備
       
       這是要使用的php測試腳本(并不是我的線上代碼,只是一個樣例)。
      <?php
      if ($_SERVER['argc'] < 2) {
          echo "調用不正確!\n";
          echo "調用方式:";
          echo "php {$_SERVER['argv'][0]} { rsync_show  | rsync_show_by_id 1231123 | rsync_douban }\n";
          exit(-1);
      }
      
      function rsync_show() {
          echo "調用節目數據\n";
      }
      
      function rsync_show_by_id($id) {
          if(empty($id)){
              echo "缺少參數...\n";
              exit(-1);
          }
          echo "根據指定ID開始導入節目數據\n";
      }
      
      function rsync_douban() {
          echo "調用豆瓣數據層\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);

      查看幾個調用結果

                                           錯誤1

                                           錯誤2

                                           正確的調用方式

       

                                           通過crontab -e設置個定時執行腳本

       

       

       

       
      shell 腳本
       
      1、開始使用shell腳本編程

                                           運行腳本

       

      2、添加一個停止腳本

       

       

      3、函數整理

       

      shell 查漏補缺
       
       
       
      兩大問題:
        1、是不是再寫一個方法?
        2、怎么傳參啊?

       第一個問題,直接用start方法就行了,沒必要再寫一個方法!——多寫一個方法是要付出代價的。

      第二個問題怎么解決,我忽然想到在我們安裝開源軟件的時候喜歡這么用,如下圖  

       所以我決定也使用類似的方法作為參數傳遞之用。

      具體看我下面的方法調用啊!

                                           運行腳本

       重點

        1、函數調用

          start $2    # 這是函數 + 參數

          函數中的 $1表示第一個參數!

        2、字符截取

          ${1:2:2} 表示把$1這個變量里的值從第2個(下標是從0開始的)下標開始,截取2個長度的字符。

          ID=${1#--id=}表示從$1這個變量開頭刪除最近匹配--id=的子串。

       

                                             放入crontab中

       

      我在php的源代碼中的configure中發現了一個不錯的輸出字符的方法,與大家分享

                                             最近發現腳本一天執行完畢不了,這樣就產生多個腳本在后臺執行的問題,解決方案如下

       

                                             運行效果

       

       

      完整源碼
       
      #!/bin/bash
      
      WORK_DIR="/home/www/test/"
      SCRIPT_NAME=index.php
      
      function start() {
          if [ "$1" != "" ] && [ ${1:2:2} == "id" ]
          then
              ID=${1#--id=}
              echo "開始導入ID為$ID的數據"
              nohup php $WORK_DIR/$SCRIPT_NAME rsync_show_by_id $ID &
              exit 0
          fi  
      
          pid=`ps aux | grep $SCRIPT_NAME | grep -v grep | awk '{print $2}'`
          if [ "$pid" != "" ]
          then
              echo "腳本已經啟動..."
              exit 0
          fi  
      
          echo "開始導入數據..."
          nohup php $WORK_DIR/$SCRIPT_NAME rsync_show rsync_douban &
      }
      
      function stop() {
          echo "結束導入數據..."
          #pkill -9 -f index.php
          pid=`ps aux | grep $SCRIPT_NAME | grep -v grep | awk '{print $2}'`
          if [ "$pid" != "" ]
          then
              kill -9 $pid &>/dev/null
          fi  
      }
      
      function restart() {
          stop
          start
      }
      
      
      case "$1" in
          start )
              start $2 ;;
          stop )
              stop ;;
          restart )
              restart ;;
          * )
      cat <<_ACEOF
          使用方法:
              $0 { start | stop | restart }
          選項配置
              $0 start --id=1003
      _ACEOF
          ;;
      esac
      exit 0

       

       

      總結
       
        這就是我今天收獲的一些東西,shell我也不是很精通。如果大家有更好的建議,希望告知一、二。

       

      推薦
       
       

       

       

      posted on 2012-10-24 22:28  川山甲  閱讀(3395)  評論(3)    收藏  舉報
      主站蜘蛛池模板: 久久国内精品自在自线观看| 色综合 图片区 小说区| 乱人伦中文字幕成人网站在线| 国产精品办公室沙发| 亚洲人成网站77777在线观看| 国产成人一区二区三区视频免费| 国产精品亚洲а∨无码播放| 国产一区二区三区不卡视频| 一本av高清一区二区三区| 国产精品成人一区二区不卡| 亚洲人成人日韩中文字幕| av永久免费网站在线观看| 国产精品久久久久鬼色| 精品国产高清中文字幕| 性欧美vr高清极品| 精品精品久久宅男的天堂| 无码人妻丝袜在线视频红杏| 云阳县| 视频区 国产 图片区 小说区| 久久SE精品一区精品二区| 大渡口区| 久久久精品94久久精品| 国产妇女馒头高清泬20p多毛| 欧美videos粗暴| 国产亚洲精品VA片在线播放| 南平市| 无码人妻熟妇av又粗又大| 国产精品一区二区久久岳| 亚洲乱码一区二区三区视色| 亚洲国产精品自产在线播放| 国产成人亚洲综合图区| 成人精品一区日本无码网| 一区二区在线观看成人午夜| 亚洲最大日韩精品一区| 亚洲精品二区在线播放| 国产日韩精品欧美一区灰 | 爆乳女仆高潮在线观看| 免费无码一区无码东京热| 中文字幕在线无码一区二区三区 | 国产精品国产三级国产试看| 桃花岛亚洲成在人线AV|