国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

用PHP來寫記數器(詳細介紹)

瀏覽:5日期:2024-01-04 13:09:07
PHP實例剖析:計數器 作者:Sucre_tiger 本款計數器用文本計數,沒有用到數據庫,可以實現如下功能: 利用一個文本文件實現多個頁的計數減少服務器的I/O占用率在需要紀錄的文件里,只需加入很少的幾行代碼;;;;基本思路如下: 服務器程序從文本文件中讀取該頁被瀏覽的次數,(因為所有文件向服務器提出請求時,他們的環境變量REQUEST_URI都代表他來自于何處... ...,所以,以請求文件的環境變量REQUEST_URI來辨別到底是那一頁正被瀏覽。),將這個次數加一儲存,并在調用這頁的用戶的計算機上顯示出來。 請先看我的數據文本中紀錄的數據樣本,(紅色為瀏覽次數,其前面為相應的被瀏覽的文件) Counter.dat/script/s2.php|3|/script/s1.php|11| /script/counter.php|5| /testhtml/s2.php|7|/testhtml/s3.php|6| Now,Let’s go! counter.php <html><head> <title>計數器</title> <head>;;<body> <?php /* 定義儲存數據的文本文件 */ $counterFile="counter.dat"/* 定義一個標記,用來辨別現在需紀錄的數據是否已經文本數據中 */ $sign=False; /* 將數據以數組的方式讀入變量 $sounterData 備用, */ $counterData=file($counterFile);;;/* 用count()函數計算共有多少個紀錄 */ /* 用explode()函數把$counterData[$i]按符號"|"分開,并以數組的方式送回到變量$varArray里 */ /* 函數implode()與explode()剛剛相反,把數組$varArray以符號"|"連接起來送回到$counterData */ /* 還利用了環境變量$PATH_INFO for($i=0;$i<=count($counterData)-1;$i++);; { $varArray=explode("|",$counterData[$i]);;;if ($varArray[0]==$GLOBALS["REQUEST_URI"]);; { $varArray[1]++; print($varArray[1]); $counterData[$i]=implode("|", $varArray); $sign=True; /* 找到本紀錄所在的位置后, 用break 退出循環 */ ;;break;  };; } /* 在這里,利用implode()這個函數的功能,將數據整理好了,一起寫入文本文件中 */ /* 這樣,對服務器的I/O占用就降到了最低點 $data=implode("",$counterData); /* 打開文本文件,將數據寫入 */ $fp=fopen($counterFile,"w"); fputs($fp,$data);;;/* 如果需要紀錄的數據不在文本里,標志$sign= Flase, 那么就往文本里添加數據 */;;if (!$sign) {fputs($fp,"n".$GLOBALS["REQUEST_URI"]."|"."1"."|"); print("1"); /* 關閉數據文件 */ fclose($fp); ?> </body> </html>;;我們已經看到了這段程序的工作過程,也都知道了思路,但如果,每個文件里都這樣寫,豈不是太麻煩. 別慌! 我們還有PHP提供的強大的require()功能呢! 我們把counter.php寫成函數,使用就方便許多了。那還等什么,下面就是你所要的函數: counter.inc <?php;;function Counter() {   $counterFile="/freespace/sucre/public_html/counter.dat"  $counterData=file($counterFile);   $sign=False;   for($i=0;$i<=count($counterData)-1;$i++);; {   $varArray=explode("|",$counterData[$i]);;;  if ($varArray[0]==$GLOBALS["REQUEST_URI"]);; {;; $varArray[1]++;;; print($varArray[1]); $counterData[$i]=implode("|", $varArray); $sign=True; break; } }   $data=implode("",$counterData);   $fp=fopen($counterFile,"w");;;  fputs($fp,$data);;;  if (!$sign);; {   fputs($fp,"n".$GLOBALS["REQUEST_URI"]."|"."1"."|");   print("1"); };;fclose($fp); };;?>;;最好的檢驗方法就是“實踐”,好了來看我們怎樣調用它,先看一個例子: counterTest.php <?php require("counter.inc"); ?> <html>;;<head>;;<title> 網頁計數器 終結版 </title> </head> <body> 您是第<? counter();?>位閱讀者 </body> </html> 您只需在要計數的HTML文件的文件頭加入require()函數,引入counter()函數為homepage的一部分。在需要的地方加入<? counter();?>就可以了。 還有幾點要注意的問題: 1、;;;;記錄數據的文件一定要有“寫”的權限,一般設成“666”即可,如果該文件存放在一個子目錄下,則對這個“目錄”也要有“寫”的權限; 2、;;;;我在調試過程中遇到這樣一個問題,我將counter.inc和counter.dat放在一個子目錄include下面,然后在不同的子目錄下面用require()函數進行調用,格式如下:<?php;;;;;;;;require(“../include/counter.inc”) ;;;;?> 可是總是出現“權限不夠”的錯誤,如有高手請指教。
標簽: PHP
主站蜘蛛池模板: 成人1000部免费观看视频 | 成人永久免费视频网站在线观看 | 亚洲国产天堂在线网址 | 亚洲美女视频免费 | 成人精品免费网站 | 国产高清视频免费观看 | 久9青青cao精品视频在线 | 亚洲成人美女 | 欧美毛片在线观看 | 国产精品免费aⅴ片在线观看 | 国产欧美精品一区二区三区四区 | 久久亚洲一级毛片 | 日本aaa成人毛片 | 国产精品三 | 欧美成人tv在线观看免费 | 嫩模大尺度人体福利视频 | 久久毛片免费看一区二区三区 | 欧美成人毛片免费网站 | 久久久国产在线 | 一级黄色毛片免费看 | 日韩专区亚洲精品欧美专区 | 日本尹人综合香蕉在线观看 | 手机在线免费看毛片 | 欧美一级毛片片免费孕妇 | 美女被免费网站视频软件 | 国产精品久久久久久小说 | 99爱在线精品视频网站 | 精品国产一区二区三区久久 | 国产香蕉尹人综合在线观 | 久久99国产乱子伦精品免费 | 日本午夜vr影院新入口 | 在线视频免费观看a毛片 | 在线观看亚洲成人 | 小毛片在线观看 | 成 人 a v黄 色 | 特级aa毛片在线播放 | 久久精品中文字幕一区 | 女人张开腿让男人添 | 久久久久久久久毛片精品 | 国产视频软件在线 | 欧美视频三级 |