The problem is that if I execute the LOAD DATA INFILE whilst there is nothing writing to MYFIFO, the server times out and the operation fails. I would much rather do something like this:my $dbh=DBI->connect("DBI:mysql:database=pings;host=$host;mysql_connec +t_timeout=10","$user","$password") or die "$!\n"; $sth=$dbh->prepare("LOAD DATA LOCAL INFILE 'MYFIFO' INTO TABLE $table +FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n'") or print "$!\n".$ +dbh->{'mysql_error'}; $sth->execute() or print "$!\n".$dbh->{'mysql_error'}; $sth->finish() or print "$!\n".$dbh->{'mysql_error'}; $dbh->disconnect() or print "Trouble disconnecting! $!\n";
But I don't know how to keep an eye on that FIFO. It gets more complicated by the fact that I need to lock tables prior to writing, but I don't want to go locking tables until I know that I'm ready to write data to them.while (1) { if (fifo_is_ready()) { # Connect to database # LOAD DATA LOCAL INFILE 'MYFIFO' etc. etc. # Disconnect } else { sleep(2); } }
In reply to Watching a named pipe by leighsharpe
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |