perl脚本在循环中添加了一段时间后的数据库插入语句stop



我已将script1转换为script2,以便使用数据库插入语句。然而,我的script2在一段时间后停止了,就像我在将脚本放入循环后耗尽内存一样。如果我只运行script1,那么循环将永远运行。我错过了什么?

脚本1

logupdate("${cid}_$mon$day${year}_${time}_${status}.csv",
       "$uid|$ext||$cid|$did|$statusn");
# log to file
sub logupdate
{
       my $log = shift;
       unless (open(LOG, ">>$path$log"))
       {
               print STDERR "Can't write to $path$log: $!n";
       }
       print LOG @_;
       close LOG;
}

脚本2

{
       my $filedata = "${cid}";                           
       my $filename = "$status";                      
       logupdate("${cid}",  "$status");
}
# log to file
sub logupdate
{
    my $filedata = shift;
    my $filename = shift;
    if ( not $dbh ) {
        $dbh = DBI->connect( $url, $user, $dbpass );
        sleep 6;
    print "reconnecting to db.... Success!n";
    }
    if ( not $filedata eq '') {
        $sth = $dbh->prepare('INSERT INTO cliinfo (calltype, callno) 
             VALUES(?,      ?)');
    $sth->execute($filename, $filedata);
    print "Inserting into db $filename:tt$filedatan";
    }
}

如果不使用$dbh作为全局变量,则使用"my"初始化$dbh;

my $dbh;

断开功能内的数据库连接;

$dbh->disconnect();

更安全的是,在函数末尾,将undef赋值给$dbh变量;

$dbh = undef;

最新更新