• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 用Perl制作頁面計數器

    發表于:2007-07-04來源:作者:點擊數: 標簽:
    網友大都喜歡在自己的主頁上做一個計數器來顯示自己主頁被訪問的次數。以前我們只能申請由第三方提供的計數器或用由系統管理員提供的計數器,受到很大限制?,F在許多免費空間都提供了CGI權限,因此我們也可以用CGI方式實現一個自己的計數器。 計數器可以用
      網友大都喜歡在自己的主頁上做一個計數器來顯示自己主頁被訪問的次數。以前我們只能申請由第三方提供的計數器或用由系統管理員提供的計數器,受到很大限制?,F在許多免費空間都提供了CGI權限,因此我們也可以用CGI方式實現一個自己的計數器。

      計數器可以用數據庫方式實現,也可以用文本文件方式實現。由于文本文件方式不涉及系統的數據庫管理系統,相對簡單,容易實現,因此,在這里介紹文本方式的計數器。

      計數器的原理比較簡單,頁面每次被訪問的時候,對記錄訪問次數的數字加1,然后將這個數顯示出來。原理雖然簡單,在具體實現上還是需要一定的技巧。

      由于一個CGI程序在服務器上并非一直駐留在內存中,為了對訪問次數進行計數,則需要把這個數字存入一個文件中,每當主頁被訪問時,打開該文件將訪問數字加1后再存入文件中。

      網站是多用戶環境,在訪問文件時必須對文件上鎖以禁止其他用戶對文件的訪問,這樣才能保證數據的可靠性。然而不同網站使用的操作系統不同,其對文件上鎖的機制也不同。本文采用了一種各種平臺都適用的方法,每當有頁面被訪問時,CGI程序創建一個臨時文件,此時若有其它進程也要對文件進行存取則須等待,進程對文件更新后刪除該臨時文件,等待的進程才能對文件進行存取。

      下面是用Perl實現的一個計數器源代碼,并加注了注釋:

    #!/usr/local/bin/perl
    #存貯表示主頁訪問量數字的文件
    $data = '/usr/local/etc/httpd/htdocs/counter.data';
    #用作文件鎖的臨時文件
    $lockfile = '/usr/local/etc/httpd/htdocs/counter.LOCK';
    # 主模塊
    &increment;
    print "Content-Type: text/html\n\n";
    print $aclearcase/" target="_blank" >ccesses;
    sub increment {
    # 檢查臨時文件是否存在
    while (-e $lockfile) {
    sleep 2; # 存在則等待2秒
    }
    # 創建臨時文件
    open(LOCK," >$lockfile") || die
    "Can't create lockfile.\n";
    # 讀文件并更新數據
    open(DATA,$data) || die "Can't open data file.\n";
    $accesses = < DATA >;
    $accesses++;
    print DATA "$accesses\n";
    close(DATA);
    # 刪除臨時文件,對數據文件開鎖
      close(LOCK);
    unlink($lockfile);
    }
       你可以在頁面上需要顯示計數器的地方加上下面的HTML代碼,頁面被訪問的時候,來訪者就可以知道自己是第幾位來訪者了。
    < html > < head >
    < title >Home Page< /title >
    < /head >
    < body >
    < h1 >Home Page< /h1 >
    < p >歡迎您!第
    < !--#exec cgi="/cgi-bin/text-counter.cgi" >
    位來訪者.< /p >
    < /body > < /html >

      只要掌握了計數器的原理,就可以設計出稱心如意的計數器,使你的主頁更有吸引力。

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>