- 论坛徽章:
- 0
|
现在做一个对数据库追加和删除的perl 程序,程序本身做成了Daemon化(当然不Daemon也可以)。
这个程序接受客户端的消息,然后取得一些客户的信息后,根据情况对数据库进行删除和追加操作。
对于正常的操作程序在背后运行的没有问题,但是如果在操作数据库时发生了错误(比如追加已经存在的项目等)
,那么程序就自动终止了。这不是我想看到的,我想让这个程序一直在背后运行,即使是数据库操作时放生错误
也继续转,等待下一次正确的操作。 不知道我描述清楚了没有,呵呵。
下面是我写的代码。
while(1) {
#sleep 1;
if (seek(FH,0,1)){
while(<FH> {
chomp $_;
if( $_ =~
m{
。。。。。
}x
){
seek (FH, 0, 2);
sleep 1;
$myobj -> doInsert($1,$2);
}
}
}
}
下面是数据库的操作
sub doInsert{
my $self = shift;
my $dbh = DBI->connect(
"dbi g:host=10.1.0.22;dbname=qu_db",
"dbuser", "dbuser", {RaiseError => 1, AutoCommit => 1}) or
die "CONNECT ERROR $DBI::errstr";
my $sth = $dbh->prepare("INSERT INTO t_allow \
(name, addr, fixed) VALUES (?,?,?)" ;
$sth->execute($A, $B, $C);
$dbh->disconnect();
return;
}
在 $sth->execute($A, $B, $C);执行时如果出现了错误程序就自动终止了,有谁知道让程序不终止然后继续回到我的主程序继续运行的
方法? |
|