網(wǎng)站建設(shè)問題分類
網(wǎng)站建設(shè)常見問題
網(wǎng)站建設(shè)最新問題
- SQL Server 中巧用另類寫法代替Like語...
- 快速掌握SQL服務(wù)器常見的危險和補救措...
- Microsoft SQL Server 連接基礎(chǔ)知識
- 十大絕招保護(hù) SQL Server數(shù)據(jù)庫安全
- Microsoft SQL Server備份和恢復(fù)措施...
- 考慮SQL Server安全 需注意幾個方面
- 什么是NT負(fù)載平衡服務(wù)
- 如何測試虛擬主機(jī)的速度
- 多個域名是否可以指向同一網(wǎng)址
- 服務(wù)器被訪問的速度由哪些因素決定
- 從哪幾個角度評價服務(wù)器的性能
- 服務(wù)器托管與虛擬主機(jī)托管有什么區(qū)別...
計數(shù)器的編寫方法
作者:佚名 來源:本站整理 發(fā)布時間:2007-11-13 13:00:29
03: open(LOCKFILE,">counter.lock);
04: dbmopen(%COUNTERS, $DOCUMENT_ROOT/DBM_FILES/counters,0666);
05: if(!(defined($counters{'my_counter'})){
06: $counters{'my_counter'}=0;}
07: $counters{'my_counter'})++;
08: $count=$counters{'my_counter'};
09: dbmclose (counters);
10: close(LOCKFILE);
11: unlink(counter.lock);
首先檢查鎖定標(biāo)志文件是否存在,如果存在,就說明另一個進(jìn)程正在使用該文件,于是等待直到該文件(此處命名為counter.lock)不存在為止。此處用select()的特殊形式循環(huán)等待,此語句使程序進(jìn)入休眠狀態(tài)一段時間,該時間段由最后一個參數(shù)定義。之所以不用sleep()函數(shù)是因為其基本單位為秒,對這種文件鎖定而言太長了,幾個微秒就足夠了。
當(dāng)鎖定標(biāo)志文件不再存在,就創(chuàng)建自己的鎖定標(biāo)志文件并開始修改計數(shù),完成后關(guān)閉該文件并用unlink函數(shù)將之刪除,這樣其它的進(jìn)程又被允許修改計數(shù)。鎖定標(biāo)志文件并不是特殊的文件,其文件名也可以由你自己隨意選擇。
2)使用flock()
其實鎖定文件是很普通的編程步驟,系統(tǒng)函數(shù)flock()提供了這一功能,如果在你的系統(tǒng)上不提供的話,可以使用前面介紹的方法自己實現(xiàn)。
flock()的語法為:
flock (filehandle, lock_type);
參數(shù)filehandle為用open()函數(shù)打開的文件句柄,lock_type可以為下面四個值之一:
1:定義共享鎖。對計數(shù)器而言不適用。
2:定義排他鎖。
3:定義非阻止鎖。此處亦不用。
4:解除鎖定。
使用flock()實現(xiàn)的文件鎖定例子如下:
1a: dbmopen(%counters,"filename", 0666);
or
1b: OPEN(counters,"<filename")'
2: flock(counters,2);
3: if(!(defined($counters{'my_counter'})){
4: $counters{'my_counter'}=0;}
5: $counters{'my_counter'})++;
6: $count=$counters{'my_counter'};
7: dbmclose (counters);
04: dbmopen(%COUNTERS, $DOCUMENT_ROOT/DBM_FILES/counters,0666);
05: if(!(defined($counters{'my_counter'})){
06: $counters{'my_counter'}=0;}
07: $counters{'my_counter'})++;
08: $count=$counters{'my_counter'};
09: dbmclose (counters);
10: close(LOCKFILE);
11: unlink(counter.lock);
首先檢查鎖定標(biāo)志文件是否存在,如果存在,就說明另一個進(jìn)程正在使用該文件,于是等待直到該文件(此處命名為counter.lock)不存在為止。此處用select()的特殊形式循環(huán)等待,此語句使程序進(jìn)入休眠狀態(tài)一段時間,該時間段由最后一個參數(shù)定義。之所以不用sleep()函數(shù)是因為其基本單位為秒,對這種文件鎖定而言太長了,幾個微秒就足夠了。
當(dāng)鎖定標(biāo)志文件不再存在,就創(chuàng)建自己的鎖定標(biāo)志文件并開始修改計數(shù),完成后關(guān)閉該文件并用unlink函數(shù)將之刪除,這樣其它的進(jìn)程又被允許修改計數(shù)。鎖定標(biāo)志文件并不是特殊的文件,其文件名也可以由你自己隨意選擇。
2)使用flock()
其實鎖定文件是很普通的編程步驟,系統(tǒng)函數(shù)flock()提供了這一功能,如果在你的系統(tǒng)上不提供的話,可以使用前面介紹的方法自己實現(xiàn)。
flock()的語法為:
flock (filehandle, lock_type);
參數(shù)filehandle為用open()函數(shù)打開的文件句柄,lock_type可以為下面四個值之一:
1:定義共享鎖。對計數(shù)器而言不適用。
2:定義排他鎖。
3:定義非阻止鎖。此處亦不用。
4:解除鎖定。
使用flock()實現(xiàn)的文件鎖定例子如下:
1a: dbmopen(%counters,"filename", 0666);
or
1b: OPEN(counters,"<filename")'
2: flock(counters,2);
3: if(!(defined($counters{'my_counter'})){
4: $counters{'my_counter'}=0;}
5: $counters{'my_counter'})++;
6: $count=$counters{'my_counter'};
7: dbmclose (counters);
聯(lián)系我們
全國統(tǒng)一免費服務(wù)電話
800-82-98988
專業(yè)網(wǎng)站建設(shè)咨詢電話
028-66533110
028-66533120
24小時移動總機(jī)
15902883120
全國統(tǒng)一免費服務(wù)電話
800-82-98988
專業(yè)網(wǎng)站建設(shè)咨詢電話
028-66533110
028-66533120
24小時移動總機(jī)
15902883120
客服專員
天府星空05號:張小姐
負(fù)責(zé)范圍:域名主機(jī)、網(wǎng)站建設(shè)
免費熱線:400-028-5488
在線聯(lián)絡(luò):QQ:800002030
電子郵件:sale@tfxk.com
天府星空05號:張小姐
負(fù)責(zé)范圍:域名主機(jī)、網(wǎng)站建設(shè)
免費熱線:400-028-5488
在線聯(lián)絡(luò):QQ:800002030
電子郵件:sale@tfxk.com
天府星空06號:鐘小姐
負(fù)責(zé)范圍:業(yè)務(wù)咨詢、疑問解答
免費熱線:400-028-5488
在線聯(lián)絡(luò):QQ:80002030
電子郵件:sale@tfxk.com
負(fù)責(zé)范圍:業(yè)務(wù)咨詢、疑問解答
免費熱線:400-028-5488
在線聯(lián)絡(luò):QQ:80002030
電子郵件:sale@tfxk.com