- 论坛徽章:
- 0
|
- #!/usr/bin/perl
- use DBI;
- my $quit = 2;
- $SIG{CHLD} = sub {$quit++;while(waitpid(-1,WNOHANG)>0){}};
- $SIG{INT} = sub {$quit++};
- my $dsn = "DBI:mysql:database=cc_com;host=61.152.X.X:3306;user=web_mysql;password=shocom#7-06";
- my $sql = "";
- my $sth = "";
- while(1){
- my @ret_value;
- $dbh = DBI->connect($dsn) || die "Database connection not made: $DBI::errstr";
- $isselect = 0;
- $i = 0;
- $sql = "SELECT * FROM upload_temp";
- $sth = $dbh->prepare( $sql );
- $sth->execute();
- while($quit>0){
- if(@row = $sth->fetchrow_array){
- $quit--;
- $i++;
- defined($ret_value[$i] = fork()) or die "error!n";
- if($ret_value[$i] == 0){
- format_conversion($row[1]);
- exit 0;
- }
- }else{
- last;
- }
- }
- foreach my $ret (@ret_value){
- if(!defined($ret)){
- #print "not defined ret_value[0] next\n";
- next;
- }
- waitpid($ret,0);
- print "waitpid($ret 0)\n";
- }
- sleep(5);
- }
- $dbh->disconnect;
- exit 0;
- sub format_conversion
- {
- my $file_path = shift;
- print "$file_path\n";
- #这里可以把数据库里的数据清除掉,做相关处理
- sleep 10;
- }
复制代码
为什么每次while里都要$dbh = DBI->connect一次吗,不能一直连接着吗?? |
|