网站建设常见问题
计数器的编写方法
作者:佚名 来源:本站整理 发布时间: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);
首先检查锁定标志文件是否存在,如果存在,就说明另一个进程正在使用该文件,于是等待直到该文件(此处命名为counter.lock)不存在为止。此处用select()的特殊形式循环等待,此语句使程序进入休眠状态一段时间,该时间段由最后一个参数定义。之所以不用sleep()函数是因为其基本单位为秒,对这种文件锁定而言太长了,几个微秒就足够了。
当锁定标志文件不再存在,就创建自己的锁定标志文件并开始修改计数,完成后关闭该文件并用unlink函数将之删除,这样其它的进程又被允许修改计数。锁定标志文件并不是特殊的文件,其文件名也可以由你自己随意选择。
2)使用flock()
其实锁定文件是很普通的编程步骤,系统函数flock()提供了这一功能,如果在你的系统上不提供的话,可以使用前面介绍的方法自己实现。
flock()的语法为:
flock (filehandle, lock_type);
参数filehandle为用open()函数打开的文件句柄,lock_type可以为下面四个值之一:
1:定义共享锁。对计数器而言不适用。
2:定义排他锁。
3:定义非阻止锁。此处亦不用。
4:解除锁定。
使用flock()实现的文件锁定例子如下:
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);
首先检查锁定标志文件是否存在,如果存在,就说明另一个进程正在使用该文件,于是等待直到该文件(此处命名为counter.lock)不存在为止。此处用select()的特殊形式循环等待,此语句使程序进入休眠状态一段时间,该时间段由最后一个参数定义。之所以不用sleep()函数是因为其基本单位为秒,对这种文件锁定而言太长了,几个微秒就足够了。
当锁定标志文件不再存在,就创建自己的锁定标志文件并开始修改计数,完成后关闭该文件并用unlink函数将之删除,这样其它的进程又被允许修改计数。锁定标志文件并不是特殊的文件,其文件名也可以由你自己随意选择。
2)使用flock()
其实锁定文件是很普通的编程步骤,系统函数flock()提供了这一功能,如果在你的系统上不提供的话,可以使用前面介绍的方法自己实现。
flock()的语法为:
flock (filehandle, lock_type);
参数filehandle为用open()函数打开的文件句柄,lock_type可以为下面四个值之一:
1:定义共享锁。对计数器而言不适用。
2:定义排他锁。
3:定义非阻止锁。此处亦不用。
4:解除锁定。
使用flock()实现的文件锁定例子如下:
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);
【公司简介】:
天府星空网络科技成都网站制作公司,专业从事成都网站建设 成都网页制作 成都网站设计以精深技术为核心、以专业队伍为支撑。致力于为成都政府网站建设、成都公司网站建设、成都学校网站建设等提供高技术含量的成都网页设计服务。
公司始终以不懈的努力、更高的目标来要求自己。凭借多年的成都网页设计成功经验,公司已拥有数百例经典网站成功案例,是正规的成都网站建设公司。
成都网站建设的专业服务商,强大的成都网页制作技术团队,在网站设计等方面始终保持领先地位,并获得了网页制作公司业界的广泛赞誉和认同。公司重视网页制作质量,打造成都地区网站制作公司知名品牌,以优秀的网站设计技术,创一流的成都网站建设作品。建网站就找天府星空,助您马到成功!
天府星空网络科技成都网站制作公司,专业从事成都网站建设 成都网页制作 成都网站设计以精深技术为核心、以专业队伍为支撑。致力于为成都政府网站建设、成都公司网站建设、成都学校网站建设等提供高技术含量的成都网页设计服务。
公司始终以不懈的努力、更高的目标来要求自己。凭借多年的成都网页设计成功经验,公司已拥有数百例经典网站成功案例,是正规的成都网站建设公司。
成都网站建设的专业服务商,强大的成都网页制作技术团队,在网站设计等方面始终保持领先地位,并获得了网页制作公司业界的广泛赞誉和认同。公司重视网页制作质量,打造成都地区网站制作公司知名品牌,以优秀的网站设计技术,创一流的成都网站建设作品。建网站就找天府星空,助您马到成功!
联系我们
全国统一免费服务电话
800-82-98988
专业网站建设咨询电话
028-66533110
028-66533120
24小时移动总机
15902883120
全国统一免费服务电话
800-82-98988
专业网站建设咨询电话
028-66533110
028-66533120
24小时移动总机
15902883120
客服专员
天府星空05号:张小姐
负责范围:域名主机、网站建设
分机电话:15902883120转665
在线联络:QQ:239270001
电子邮件:sale@tfxk.com
天府星空05号:张小姐
负责范围:域名主机、网站建设
分机电话:15902883120转665
在线联络:QQ:239270001
电子邮件:sale@tfxk.com
天府星空06号:钟小姐
负责范围:业务咨询、疑问解答
分机电话:15902883120转666
在线联络:QQ:239270002
电子邮件:sale@tfxk.com
负责范围:业务咨询、疑问解答
分机电话:15902883120转666
在线联络:QQ:239270002
电子邮件:sale@tfxk.com

您当前的位置: