自建聊天室的善后处理例子

2008-04-09 04:09:26来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

本例子是自建聊天室中的一个程序,用于将已经空置多时的聊天室关闭和进行相应的善后处理。

  #!/usr/bin/perl$flag_file="/home/www/mrtg/logs/room.flag";

  #系统中记录聊天室配置的文件;$flag_tmp="/home/www/mrtg/logs/flag.tmp";$filelog="wjz.txt";

  #用于在处理过程的临时文件;

  open(FLAG, "$#@60;$flag_file")||die "Cant open $flag_file file. $!";

  &lock_file(FLAG);open(FTMP, "$#@62;$flag_tmp")||die "Cant open $flag_tmp file. $!";

  &lock_file(FTMP);

  #将要处理的文件分别打开;

  while ($hang=$#@60;FLAG$#@62;) #循环读入FLAG文件的每一行;

  {

  $yeah=0;

  ($port,$flag,$room,$passwd,$type) = split(/@@@@@@@/, $hang); #行分解;

  if($flag eq "0") #判断标志位;

  {

  $pid_f="/home/www/mrtg/logs/chatpid.".$port;

  open(PIFD,"$#@60;$pid_f")||die "cant open!";

  $ppid=$#@60;PIFD$#@62;;

  close($pid_f);

  #读进程文件里的进程号;

  $len=length($ppid);

  system"ps -ax|grep $ppid|grep chats $#@62;$#@62;$filelog";

  open(LOG,"$#@60;$filelog")||die "cant open the file!";

  while($line=$#@60;LOG$#@62;)

  {

  @list=split(/\s /,$line);

  $line=join("",@list);

  $go=substr($line,0,$len);# print "$go--$ppid\n";

  if ($go==$ppid) { $yeah=1; }

  }

  close LOG;

  #利用unix系统命令调用,得到过期进程所产生的相应文件组,并写到临时文件中;

  system("rm $filelog");# print "$yeah-first\n";

  if ($yeah==0)

  {

  $user_f="/home/www/mrtg/logs/chatuser.".$po

  $file_f="/home/www/mrtg/logs/chatfile.".$po

  $conf_f="/home/www/mrtg/logs/chatconf.".$po

  $pid_f="/home/www/mrtg/logs/chatpid.".$port

  if(-e $user_f) { system("rm $user_f"); }

  if(-e $file_f) { system("rm $file_f"); }

  if(-e $conf_f) { system("rm $conf_f"); }

  if(-e $pid_f) { s em("rm $pid_f"); }#清理掉所有的废旧文件;

  $flag=1;

  $room="antoni";

  $passwd="wjz123";

  $type="闲谈类";

  @array=($port,$flag,$room,$passwd,$type);

  $wjz=join("@@@@@@@",@array);

  $hang=$wjz."\n";

  }

  }#以上几句重新修改聊天室配置文件;# print "$hang\n";

  print FTMP $hang;

  }

  close FLAG;

  close FTMP;

  &unlock_file(FTMP);

  rename("$flag_tmp", "$flag_file")||die("Cant rename $flag_tmp file $!");

  &unlock_file (FLAG);if(-e $flag_tmp) { system("rm $flag_tmp"); }

  #完成从临时文件到配置文件的转换;sub lock_file {

  local($FILE_HANDLE) = @_;

  local($try) = 0;

  local($status) = 0;

  while ($status != 0) {

  $status = flock($FILE_HANDLE, 2);

  ($try == 4) && last;

  $status && sleep(1);

  $try ;

  }}sub unlock_file {

  local($FILE_HANDLE) = @_;

  flock($FILE_HANDLE, 8);}#两个子函数,用于在打开处理文件中,锁住或开启文件;

156

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:全面实现面向对象开发网站

下一篇:增强企业计算的竞争力(1)