網(wǎng)站建設(shè)問題分類
網(wǎng)站建設(shè)常見問題
網(wǎng)站建設(shè)最新問題
計數(shù)器的編寫方法
作者:佚名 來源:本站整理 發(fā)布時間:2007-11-13 13:00:29
ame原有的值都被清除(如果有的話),用DBM文件中的值替換掉,給之賦予新值很簡單:$array_name{'new_key'} = value; 當調(diào)用dbmclose (%array_name);語句時綁定被解除,關(guān)聯(lián)數(shù)組中的內(nèi)容被寫如DBM文件,也可以不關(guān)閉文件而將內(nèi)容寫入,方法是調(diào)用reset (%array_name);語句,注意此語句并不是重置DBM文件,而是將內(nèi)存中的數(shù)據(jù)寫入文件。第二個參數(shù)DB_filename是不包含擴展名的,至于讀寫模式詳見本教程的語言部分。
下面是個使用DBM文件的計數(shù)器的簡單例子:
1: dbmopen(%COUNTERS, $DOCUMENT_ROOT/DBM_FILES/counters,0666);
2: if(!(defined($counters{'my_counter'})){
3: $counters{'my_counter'}=0;}
4: $counters{'my_counter'})++;
5: $count=$counters{'my_counter'};
6: dbmclose (counters);
2、文本文件
如果不用DBM文件而用文本文件,除了打開、關(guān)閉文件外,還要涉及到數(shù)據(jù)的讀寫問題,必須確定合適的數(shù)據(jù)格式,基本步驟如下:
1)打開文件
2)讀取計數(shù)
3)自增
4)寫入新值
5)關(guān)閉文件
3、文件鎖定
當更新文件內(nèi)容時,該文件可能同時被另一個進程修改。對計數(shù)器程序而言,如果兩個或多個人同時訪問頁面調(diào)用了計數(shù)器程序,就會出現(xiàn)多個進程同時修改同一文件的情況,這樣有的進程的修改就會失效。當然這并不是太大的問題,只是失去一些計數(shù)而已,不過計數(shù)器就不準確了,訪問的人越多,這個問題就越大。解決辦法就是修改時通知其它試圖打開該文件的進程等待,或叫文件鎖定,修改完再釋放,允許其它進程打開文件并修改。有兩種方法,一是創(chuàng)建自己的鎖定機制,一種是使用系統(tǒng)函數(shù)flock()。
1)創(chuàng)建自己的文件鎖
這種方法具體實現(xiàn)是創(chuàng)建和刪除一個特定名稱的文件,這在資源共享機制中通常稱作semaphore。下面是個例子:
01: While(-f counter.lock){
02: select(undef,undef,undef,0.1);}
下面是個使用DBM文件的計數(shù)器的簡單例子:
1: dbmopen(%COUNTERS, $DOCUMENT_ROOT/DBM_FILES/counters,0666);
2: if(!(defined($counters{'my_counter'})){
3: $counters{'my_counter'}=0;}
4: $counters{'my_counter'})++;
5: $count=$counters{'my_counter'};
6: dbmclose (counters);
2、文本文件
如果不用DBM文件而用文本文件,除了打開、關(guān)閉文件外,還要涉及到數(shù)據(jù)的讀寫問題,必須確定合適的數(shù)據(jù)格式,基本步驟如下:
1)打開文件
2)讀取計數(shù)
3)自增
4)寫入新值
5)關(guān)閉文件
3、文件鎖定
當更新文件內(nèi)容時,該文件可能同時被另一個進程修改。對計數(shù)器程序而言,如果兩個或多個人同時訪問頁面調(diào)用了計數(shù)器程序,就會出現(xiàn)多個進程同時修改同一文件的情況,這樣有的進程的修改就會失效。當然這并不是太大的問題,只是失去一些計數(shù)而已,不過計數(shù)器就不準確了,訪問的人越多,這個問題就越大。解決辦法就是修改時通知其它試圖打開該文件的進程等待,或叫文件鎖定,修改完再釋放,允許其它進程打開文件并修改。有兩種方法,一是創(chuàng)建自己的鎖定機制,一種是使用系統(tǒng)函數(shù)flock()。
1)創(chuàng)建自己的文件鎖
這種方法具體實現(xiàn)是創(chuàng)建和刪除一個特定名稱的文件,這在資源共享機制中通常稱作semaphore。下面是個例子:
01: While(-f counter.lock){
02: select(undef,undef,undef,0.1);}
聯(lián)系我們
全國統(tǒng)一免費服務(wù)電話
800-82-98988
專業(yè)網(wǎng)站建設(shè)咨詢電話
028-66533110
028-66533120
24小時移動總機
15902883120
全國統(tǒng)一免費服務(wù)電話
800-82-98988
專業(yè)網(wǎng)站建設(shè)咨詢電話
028-66533110
028-66533120
24小時移動總機
15902883120
客服專員
天府星空05號:張小姐
負責(zé)范圍:域名主機、網(wǎng)站建設(shè)
免費熱線:400-028-5488
在線聯(lián)絡(luò):QQ:800002030
電子郵件:sale@tfxk.com
天府星空05號:張小姐
負責(zé)范圍:域名主機、網(wǎng)站建設(shè)
免費熱線:400-028-5488
在線聯(lián)絡(luò):QQ:800002030
電子郵件:sale@tfxk.com
天府星空06號:鐘小姐
負責(zé)范圍:業(yè)務(wù)咨詢、疑問解答
免費熱線:400-028-5488
在線聯(lián)絡(luò):QQ:80002030
電子郵件:sale@tfxk.com
負責(zé)范圍:業(yè)務(wù)咨詢、疑問解答
免費熱線:400-028-5488
在線聯(lián)絡(luò):QQ:80002030
電子郵件:sale@tfxk.com