自建聊天室的善后处理例子
2008-04-09 04:09:26来源:互联网 阅读 ()
#!/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)
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash